-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommon.cmake
66 lines (55 loc) · 2.38 KB
/
common.cmake
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
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
set(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE})
if(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
set(CMAKE_CXX_FLAGS "/MP /utf-8 /EHsc /Zi /W3 /Fd\"$(OutDir)$(TargetName).pdb\"")
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Ob0 /RTC1 /MDd /D_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /Oi /Gy /GL /MD /DNDEBUG")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")
set(CMAKE_SHARED_LINKER_FLAGS "/DEBUG")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/INCREMENTAL")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/INCREMENTAL:NO /OPT:REF /OPT:ICF /LTCG")
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
set(CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
set(CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
set(CMAKE_CXX_FLAGS "-pipe -g -W -Wno-unused-parameter -Wno-missing-field-initializers -Wno-sign-compare -pthread")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -D_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fno-strict-aliasing -DNDEBUG")
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
set(CMAKE_INSTALL_RPATH "\${ORIGIN}")
endif()
set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS})
set(CMAKE_C_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
set(CMAKE_C_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
set(ROOT_DIR ${CMAKE_SOURCE_DIR})
set(BIN_DIR ${ROOT_DIR}/bin/${CMAKE_SYSTEM_NAME}/${CMAKE_BUILD_TYPE})
if(NOT PROJECT_VERSION)
set(PROJECT_VERSION 1.0.0)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
add_compile_definitions(UNICODE _UNICODE WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS K_WINDOWS)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
add_compile_definitions(K_LINUX)
endif()
add_compile_definitions(PROJECT_VERSION=\"${PROJECT_VERSION}\")
function(find_subdirectories DIR SUB_DIRS FULL_PATH)
if(${FULL_PATH})
file(GLOB FILENAMES ${DIR}/*)
set(PARENT_DIR "")
else()
file(GLOB FILENAMES RELATIVE ${DIR} ${DIR}/*)
set(PARENT_DIR ${DIR}/)
endif()
foreach(FILENAME ${FILENAMES})
if(NOT IS_DIRECTORY ${PARENT_DIR}${FILENAME})
list(REMOVE_ITEM FILENAMES ${FILENAME})
endif()
endforeach()
set(${SUB_DIRS} ${FILENAMES} PARENT_SCOPE)
endfunction()