CMake 入门/常用变数
外观
< CMake 入門
以下是常用的 CMake 内定变数参考,内容并不完备。如果需要获得完整的变数说明,可输入下列指令
cmake --help-variables filename.htm
会在目前的资料夹下产生filename.htm,内容为所有内建变数的说明。
系统和编译器资讯
[编辑]CMake 系统资讯
[编辑]以下皆为字串类型
- CMAKE_SYSTEM
- 系统全名,如 "Linux-2.4.22","FreeBSD-5.4-RELEASE" 或 "Windows 5.1"
- CMAKE_SYSTEM_NAME
- 系统名称,如 "Linux", "FreeBSD" or "Windows"
- CMAKE_SYSTEM_VERSION
- 只有 CMAKE_SYSTEM 当中版本的部分
- CMAKE_SYSTEM_PROCESSOR
- CPU 名称,如 "Intel(R) Pentium(R) M processor 2.00GHz"
- CMAKE_GENERATOR
- 在命令列所指定的 Generator 名称
系统旗标
[编辑]以下皆为 BOOL 类型,若是与目前所属的操作系统/编译器相符,其值为True,否则为 False。
- UNIX
- WIN32
- 在 MINGW、CYGWIN、MSYS 亦为 True
- APPLE
- MINGW
- MSYS
- CYGWIN
- BORLAND
- WATCOM
- MSVC, MSVC_IDE, CMAKE_COMPILER_2005, MSVC60, MSVC70, MSVC71, MSVC80, MSVC90, MSVC10
- 不同版本的微软 Visual C++ 专案档
- CMAKE_COMPILER_IS_GNUCC
- 目前使用 GNU C 编译器
- CMAKE_COMPILER_IS_GNUCXX
- 目前使用 GNU C++ 编译器
资料夹和档案资讯
[编辑]- CMAKE_SOURCE_DIR
- 内容为 source tree 根目录的完整路径,也就是 CMake 开始建置过程的进入点。
- CMAKE_BINARY_DIR
- 内容为 binary tree 根目录的完整路径,在 in-source build 的时候值与 CMAKE_SOURCE_DIR 相同。
- PROJECT_SOURCE_DIR
- 目前正在处理中的专案最上层目录,即内含 project() 指令的 CMakeLists 所在资料夹。
- PROJECT_BINARY_DIR
- 目前所属专案的建置根目录。在 in-source build 时和 PROJECT_SOURCE_DIR 相同。
- CMAKE_CURRENT_SOURCE_DIR
- 目前正在处理的 CMakeLists.txt 所在位置。
- CMAKE_CURRENT_BINARY_DIR
- 目前正在处理的 CMakeLists.txt 对应的建置资料夹位置。在 in-source build 时和 CMAKE_CURRENT_SOURCE_DIR 相同。
编译选项
[编辑]- BUILD_SHARED_LIBS
- 将所有程式库 target 设成共享程式库,只对未指定类型的程式库有效。
- CMAKE_BUILD_TYPE
- 控制建置类型,值可为下列之一:
- None: 编译器预设值
- Debug: 产生除错资讯
- Release: 进行最佳化
- RelWithDebInfo: 进行最佳化,但仍然会启用 DEBUG flag
- MinSizeRel: 进行程式码最小化
特别要注意的是,CMAKE_BUILD_TYPE 在 configuration time 不会自动初始化为可读取的变数,必须要在使用者指定建置类型后才可以利用。
- CMAKE_C_FLAGS
- 在呼叫 C 编译器时附加的额外选项,对所有的建置类型都有效。
- CMAKE_C_FLAGS_DEBUG
- 在呼叫 C 编译器时附加的额外选项。只有在建置类型为 Debug 时才会套用。
- CMAKE_C_FLAGS_RELEASE
- 在呼叫 C 编译器时附加的额外选项。只有在建置类型为 Release 时才会套用。
- CMAKE_C_FLAGS_RELWITHDEBINFO
- 在呼叫 C 编译器时附加的额外选项。只有在建置类型为 RelWithDebInfo 时才会套用。
- CMAKE_CXX_FLAGS、CMAKE_CXX_FLAGS_DEBUG、CMAKE_CXX_FLAGS_RELEASE、CMAKE_CXX_FLAGS_RELWITHDEBINFO
- 同上,但作用在 C++ 编译器 。
- CMAKE_EXE_LINKER_FLAGS
- 生成执行档时所使用的连结选项。
- CMAKE_SHARED_LINKER_FLAGS
- 生成 shared library 时所使用的连结选项。