forked from TanninOne/usvfs
-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
75 lines (60 loc) · 2.25 KB
/
CMakeLists.txt
File metadata and controls
75 lines (60 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
cmake_minimum_required(VERSION 3.16)
include(CMakePackageConfigHelpers)
project(usvfs)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
set(CMAKE_CXX_STANDARD 20)
set(USVFS_BINDIR ${CMAKE_CURRENT_LIST_DIR}/bin)
set(USVFS_LIBDIR ${CMAKE_CURRENT_LIST_DIR}/lib)
if (MSVC)
# /Zi generate PDBs
# /Gy enable function-level linking
# /Oi enable intrinsic function
add_compile_options("$<$<NOT:$<CONFIG:DEBUG>>:/Zi;/Gy;/Oi>")
# /OPT:ICF enable COMDAT folding
# /DEBUG:FULL generate debug info (PDB)
# /OPT:REF enable references (PDB)
add_link_options("$<$<NOT:$<CONFIG:DEBUG>>:/OPT:ICF;/DEBUG:FULL;/OPT:REF>")
endif()
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(ARCH_POSTFIX _x86)
else()
set(ARCH_POSTFIX _x64)
endif()
add_subdirectory(src/shared)
add_subdirectory(src/thooklib)
add_subdirectory(src/tinjectlib)
add_subdirectory(src/usvfs_helper)
add_subdirectory(src/usvfs_dll)
add_subdirectory(src/usvfs_proxy)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/usvfsConfig.cmake"
INSTALL_DESTINATION "lib/cmake/usvfs"
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/include/usvfs/usvfs_version.h" usvfs_version)
string(REGEX MATCH "USVFS_VERSION_MAJOR ([0-9]*)" _ ${usvfs_version})
set(usvfs_version_major ${CMAKE_MATCH_1})
string(REGEX MATCH "USVFS_VERSION_MINOR ([0-9]*)" _ ${usvfs_version})
set(usvfs_version_minor ${CMAKE_MATCH_1})
string(REGEX MATCH "USVFS_VERSION_BUILD ([0-9]*)" _ ${usvfs_version})
set(usvfs_version_build ${CMAKE_MATCH_1})
string(REGEX MATCH "USVFS_VERSION_REVISION ([0-9]*)" _ ${usvfs_version})
set(usvfs_version_revision ${CMAKE_MATCH_1})
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/usvfsConfigVersion.cmake"
VERSION "${usvfs_version_major}.${usvfs_version_minor}.${usvfs_version_build}.${usvfs_version_revision}"
COMPATIBILITY AnyNewerVersion
ARCH_INDEPENDENT
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/usvfsConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/usvfsConfigVersion.cmake
DESTINATION lib/cmake/usvfs
)
if (BUILD_TESTING)
enable_testing()
set(USVFS_TEST_BINDIR ${CMAKE_CURRENT_LIST_DIR}/test/bin)
add_subdirectory(test)
endif()