目录:
变量
(1)cmake 变量引用的方式
(2)变量定义方式
(3)常用变量
环境变量
系统信息
常用的开关选项
变量
(1)cmake 变量引用的方式
前面我们已经提到了,使用 ${}进行变量的引用。在 IF 等语句中,是直接使用变量名而不通过 ${}取值。
(2)变量定义方式
主要有隐式定义和显式定义两种
隐式定义:如 PROJECT 指令,它会隐式的定义<projectname>_BINARY_DIR 和<projectname>_SOURCE_DIR 两个变 量。
显式定义: SET 指令,构建自定义变量。 比如:
SET(HELLO_SRC main.SOURCE_PATHc),就PROJECT_BINARY_DIR可以通过 ${HELLO_SRC}来引用这个自定义变量了.
(3)常用变量
变量名 | 变量含义 |
---|---|
CMAKE_BINARY_DIR PRO JECT_BINARY_DIR <projectname>_BINARY_DIR |
工程编译发生的目录 |
CMAKE_SOURCE_DIR PROJECT_SOURCE_DIR <projectname>_SOURCE_DIR |
工程顶层目录 |
CMAKE_CURRENT_SOURCE_DIR | 当前CMakeLists.txt所在目录 |
CMAKE_CURRENT_LIST_FILE | 调用这个变量的 CMakeLists.txt 的完整路径 |
CMAKE_CURRENT_BINARY_DIR | 指的是 target 编译目录使用我们上面提到的ADD_SUBDIRECTORY(src bin)可以更改这个变量的值。 使用SET(EXECUTABLE_OUTPUT_PATH <新路径>)并不会对这个变量造成影响,它仅仅修改了最终目标文件存放的路径。 |
EXECUTABLE_OUTPUT_PATH | 生成的可执行程序的存放目录 |
LIBRARY_OUTPUT_PATH | 生成的lib 存放目录 |
PROJECT_NAME | PROJECT 指令定义的项目名称 |
环境变量
(1)调用环境变量
$ENV{NAME}
指令就可以调用系统的环境变量
设置环境变量的方式是: SET(ENV{变量名} 值)
CMAKE_INCLUDE_CURRENT_DIR
自动添加 CMAKE_CURRENT_BINARY_DIR 和 CMAKE_CURRENT_SOURCE_DIR 到当前处理
的 CMakeLists.txt。相当于在每个 CMakeLists.txt 加入: INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR})
系统信息
命令 | 含义 |
---|---|
CMAKE_MAJOR_VERSION | CMAKE 主版本号,比如 2.4.6 中的 2 |
CMAKE_MINOR_VERSION | CMAKE 次版本号,比如 2.4.6 中的 4 |
CMAKE_PATCH_VERSION | CMAKE补丁等级,比如2.4.6 中的6 |
CMAKE_SYSTEM | 系统名称,比如 Linux-2.6.22 |
CMAKE_SYSTEM_NAME | 不包含版本的系统名,比如 Linux |
CMAKE_SYSTEM_VERSION | 系统版本,比如 2.6.22 |
CMAKE_SYSTEM_PROCESSOR | 处理器名称,比如 i686. |
UNIX | 在所有的类UNIX平台为TRUE,包括OS X和cygwin |
WIN32 | 在所有的 win32 平台为 TRUE,包括 cygwin |
常用的开关选项
(1) BUILD_SHARED_LIBS
这个开关用来控制默认的库编译方式,如果不进行设置,使用 ADD_LIBRARY
并没有指定库
类型的情况下,默认编译生成的库都是静态库。 如果SET(BUILD_SHARED_LIBS ON)
后,默认生成的为动态库。
(2) CMAKE_C_FLAGS
设置 C 编译选项,也可以通过指令 ADD_DEFINITIONS()
添加。
(3) CMAKE_CXX_FLAGS
设置 C++编译选项,也可以通过指令 ADD_DEFINITIONS()
添加。