现在看到一个开源代码的CMakeLists文件,现在来学习里面的一些东西;
${PROJECT_SOURCE_DIR}
文件里有多个这个,这是获取变量PROJECT_SOURCE_DIR的值;但是没看到PROJECT_SOURCE_DIR的定义;PROJECT_SOURCE_DIR是CMake的预定义
变量表示工程的根目录;
我当前的代码在 D:\3dtile\Cesium3DTilesConverter-master 目录;是不是指这个目录;
还有2个常用的预定义变量是,
PROJECT_BINARY_DIR 运行 cmake 命令的目录,通常是 ${PROJECT_SOURCE_DIR}/build
PROJECT_NAME 返回通过 project 命令定义的项目名称;
set(CMAKE_CXX_STANDARD 17)
这是指定C++标准;这里指定了17,那么项目要在支持C++17的编译环境才能编译;
C++标准有以下;
C++98/C++03标准,C++11标准,C++14标准,C++17标准,C++20标准,C++23标准;
CMAKE_MODULE_PATH
预定义变量;定义自己的 cmake 模块所在的路径,SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调
用自己的模块
CMAKE_CURRENT_SOURCE_DIR
预定义变量;当前处理的 CMakeLists.txt 所在的路径;
EXECUTABLE_OUTPUT_PATH
预定义变量;重新定义目标二进制可执行文件的存放位置;
LIBRARY_OUTPUT_PATH
重新定义目标链接库文件的存放位置;
CMAKE_BUILD_TYPE
CMake可以配置构建类型,例如:Debug、Release等,控制生成构建系统使用的配置变量 是 CMAKE_BUILD_TYPE 。该变量默认为空,CMake识别的值为:
Debug:用于在没有优化的情况下,使用带有调试符号构建库或可执行文件。
Release:用于构建的优化的库或可执行文件,不包含调试符号。
RelWithDebInfo:用于构建较少的优化库或可执行文件,包含调试符号。
MinSizeRel:用于不增加目标代码大小的优化方式,来构建库或可执行文件。
PROJECT_HEADERS
里面还有个这个,还不知是啥;看上去是指头文件文件夹或者全部的头文件;