-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
110 lines (94 loc) · 5.51 KB
/
CMakeLists.txt
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
project(zq)
MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} ${CMAKE_CL_64}")
#一、变量的引用方式是使用“${}",在IF中,不需要使用这种方式,直接使用变量名即可
#二、自定义变量使用SET(OBJ_NAME xxxx),使用时${OBJ_NAME}
#三、cmake的常用变量:
#CMAKE_BINARY_DIR,PROJECT_BINARY_DIR,_BINARY_DIR:
#这三个变量内容一致,如果是内部编译,就指的是工程的顶级目录,如果是外部编译,指的就是工程编译发生的目录。
#CMAKE_SOURCE_DIR,PROJECT_SOURCE_DIR,_SOURCE_DIR:
#这三个变量内容一致,都指的是工程的顶级目录。
#CMAKE_CURRENT_BINARY_DIR:外部编译时,指的是target目录,内部编译时,指的是顶级目录
#CMAKE_CURRENT_SOURCE_DIR:CMakeList.txt所在的目录
#CMAKE_CURRENT_LIST_DIR:CMakeList.txt的完整路径
#CMAKE_CURRENT_LIST_LINE:当前所在的行
#CMAKE_MODULE_PATH:如果工程复杂,可能需要编写一些cmake模块,这里通过SET指定这个变量
#LIBRARY_OUTPUT_DIR,BINARY_OUTPUT_DIR:库和可执行的最终存放目录
#PROJECT_NAME:你猜~~
#四、cmake中调用环境变量
#1.Using $ENV{NAME} : invoke system environment varible.
#We can use "SET(ENV{NAME} value)" as well. note that the "ENV" without "$".
#CMake常用变量
#UNIX 如果为真,表示为 UNIX-like 的系统,包括 AppleOS X 和 CygWin
#WIN32 如果为真,表示为 Windows 系统,包括 CygWin
#APPLE 如果为真,表示为 Apple 系统
#CMAKE_SIZEOF_VOID_P 表示 void* 的大小(例如为 4 或者 8),可以使用其来判断当前构建为 32 位还是 64 位
#CMAKE_CURRENT_LIST_DIR 表示正在处理的CMakeLists.txt 文件的所在的目录的绝对路径(2.8.3 以及以后版本才支持)
#CMAKE_ARCHIVE_OUTPUT_DIRECTORY 用于设置 ARCHIVE 目标的输出路径
#CMAKE_LIBRARY_OUTPUT_DIRECTORY 用于设置 LIBRARY 目标的输出路径
#CMAKE_RUNTIME_OUTPUT_DIRECTORY 用于设置 RUNTIME 目标的输出路径
MESSAGE(STATUS "default output: ${LIBRARY_OUTPUT_DIR} ${BINARY_OUTPUT_DIR} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
MESSAGE(STATUS "default output: ${LIBRARY_OUTPUT_PATH} ${EXECUTABLE_OUTPUT_PATH}")
SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
MESSAGE(STATUS "${PROJECT_NAME} output: ${LIBRARY_OUTPUT_PATH} ${EXECUTABLE_OUTPUT_PATH}")
#构建类型
#CMake 为我们提供了四种构建类型:
#Debug
#Release
#MinSizeRel
#RelWithDebInfo
#如果使用 CMake 为 Windows MSVC 生成 projects/workspaces 那么我们将得到上述的 4 种解决方案配置。
#如果使用 CMake 生成 Makefile 时,我们需要做一些不同的工作。CMake 中存在一个变量 CMAKE_BUILD_TYPE 用于指定构建类型,此变量只用于基于 make 的生成器。我们可以这样指定构建类型:
#$ CMake -DCMAKE_BUILD_TYPE=Debug ..
#这里的 CMAKE_BUILD_TYPE 的值为上述的 4 种构建类型中的一种。
#编译和链接标志
#C 编译标志相关变量:
#CMAKE_C_FLAGS
#CMAKE_C_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
#C++ 编译标志相关变量:
#CMAKE_CXX_FLAGS
#CMAKE_CXX_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
#CMAKE_C_FLAGS 或CMAKE_CXX_FLAGS 可以指定编译标志
#CMAKE_C_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]或 CMAKE_CXX_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO] 则指定特定构建类型的编译标志,这些编译标志将被加入到 CMAKE_C_FLAGS 或 CMAKE_CXX_FLAGS 中去,例如,如果构建类型为 DEBUG,那么 CMAKE_CXX_FLAGS_DEBUG 将被加入到 CMAKE_CXX_FLAGS中去
#链接标志相关变量:
#CMAKE_EXE_LINKER_FLAGS
#CMAKE_EXE_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
#CMAKE_MODULE_LINKER_FLAGS
#CMAKE_MODULE_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
#CMAKE_SHARED_LINKER_FLAGS
#CMAKE_SHARED_LINKER_FLAGS_[DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO]
#MESSAGE(STATUS "This is XApp PROJECT BINARY dir " ${PROJECT_BINARY_DIR})
#MESSAGE(STATUS "This is XApp CMAKE BINARY dir " ${CMAKE_BINARY_DIR})
#MESSAGE(STATUS "This is XApp PROJECT SOURCE dir " ${PROJECT_SOURCE_DIR})
#MESSAGE(STATUS "This is XApp CMAKE SOURCE dir " ${CMAKE_SOURCE_DIR})
#MESSAGE(STATUS "This is XApp current BINARY dir " ${CMAKE_CURRENT_BINARY_DIR})
#MESSAGE(STATUS "This is XApp current SOURCE dir " ${CMAKE_CURRENT_SOURCE_DIR})
#MESSAGE(STATUS "This is XApp current CMAKE SOURCE dir " ${CMAKE_CURRENT_SOURCE_DIR})
#MESSAGE(STATUS "This is XApp current CMakeList.txt dir " ${CMAKE_CURRENT_LIST_DIR})
#MESSAGE(STATUS "This is XApp current CMakeList.txt line " ${CMAKE_CURRENT_LIST_LINE})
# 系统
MESSAGE(STATUS "CMAKE_SYSTEM_NAME: " ${CMAKE_SYSTEM_NAME})
# 平台
IF(CMAKE_CL_64)
SET(PLATFORM x64)
ELSE()
SET(PLATFORM x86)
ENDIF()
MESSAGE(STATUS "PLATFORM: " ${PLATFORM})
MESSAGE(STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS})
MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG: " ${CMAKE_CXX_FLAGS_DEBUG})
MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE: " ${CMAKE_CXX_FLAGS_RELEASE})
MESSAGE(STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS})
MESSAGE(STATUS "CMAKE_C_FLAGS_DEBUG: " ${CMAKE_C_FLAGS_DEBUG})
MESSAGE(STATUS "CMAKE_C_FLAGS_RELEASE: " ${CMAKE_C_FLAGS_RELEASE})
MESSAGE(STATUS "CMAKE_CONFIGURATION_TYPES: " ${CMAKE_CONFIGURATION_TYPES})
#SET(CMAKE_BUILD_TYPE Debug)
MESSAGE(STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
IF(WIN32)
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
ENDIF()
add_subdirectory(zqsrv)
add_subdirectory(view)
add_subdirectory(zqapp)