最近在写CMakeLists遇到了很多预定义变量,特此记录便于日后查阅。
文件结构如下:
常用路径变量
PROJECT_NAME:通过PROJECT指定的项目名称
project(Demo)
PROJECT_SOURCE_DIR:工程的根目录,上图中的Demo目录
PROJECT_BINARY_DIR:执行cmake命令的目录,一般是在build目录,在此目录执行cmake ..
CMAKE_CURRENT_SOURCE_DIR: 当前CMakeLists.txt文件所在目录
CMAKE_CURRENT_BINARY_DIR: target编译目录,可使用ADD_SUBDIRECTORY来修改此变量
# 添加cmake执行子目录
ADD_SUBDIRECTORY(example)
EXECUTABLE_OUTPUT_PATH:重新定义目标链接库文件的输出位置
# 设置可执行文件的输出路径为 build/bin
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
LIBRARY_OUTPUT_PATH:库文件输出位置
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
常用系统信息变量
CMAKE_MAJOR_VERSION:cmake的主版本号cmake version 3.11.2中的3
CMAKE_MINOR_VERSION:cmake的次版本号cmake version 3.11.2中的11
CMAKE_PATCH_VERSION:cmake的补丁等级cmake version 3.11.2中的2
CMAKE_SYSTEM:系统名称,带版本号
CMAKE_SYSTEM_NAME:系统名称,不带版本号
CMAKE_SYSTEM_VERSION:系统版本号
CMAKE_SYSTEM_PROCESSOR:处理器名称
编译选项:
BUILD_SHARED_LIBS:默认的库编译方式(shared or static),默认为static,一般在ADD_LIBRARY时直接指定编译库的类型
CMAKE_C_FLAGS:设置C编译选项
CMAKE_CXX_FLAGS:设置C++编译选项
CMAKE_CXX_FLAGS_DEBUG:设置编译类型为Debug时的编译选项
CMAKE_CXX_FLAGS_RELEASE:设置编译类型为Release时的编译选项
CMAKE_CXX_COMPILER:设置C++编译器
# 设置C++编译器为g++
set(CMAKE_CXX_COMPILER "g++")
# 设置标准库版本为c++17 并开启警告
set(CMAKE_CXX_FLAGS "-std=c++17 -Wall")
# 设置Debug模式下,不开启优化,开启调试,生成更详细的gdb调试信息
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ggdb")
# 设置Release模式下,开启最高级优化
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
到此 CMakeLists 中常用的预定义变量介绍完成。