常用变量
变量名 | 变量说明 |
---|---|
PROJECT_NAME | 返回通过PROJECT指令定义的项目名称 |
PROJECT_SOURCE_DIR | CMake源码地址,即cmake命令后指定的地址 |
PROJECT_BINARY_DIR | 运行cmake命令的目录,通常是PROJECT_SOURCE_DIR下的build目录 |
CMAKE_MODULE_PATH | 定义自己的cmake模块所在的路径 |
CMAKE_CURRENT_SOURCE_DIR | 当前处理的CMakeLists.txt所在的路径 |
CMAKE_CURRENT_LIST_DIR | 当前文件夹路径 |
CMAKE_CURRENT_LIST_FILE | 输出调用这个变量的CMakeLists.txt的完整路径 |
CMAKE_CURRENT_LIST_LINE | 输出这个变量所在的行 |
CMAKE_RUNTIME_OUTPUT_DIRECTORY | 生成可执行文件路径 |
CMAKE_LIBRARY_OUTPUT_DIRECTORY | 生成库的文件夹路径 |
CMAKE_BUILD_TYPE | 指定基于make的产生器的构建类型(Release,Debug) |
CMAKE_C_FLAGS | *.C文件编译选项,如 -std=c99 -O3 -march=native |
CMAKE_CXX_FLAGS | *.CPP文件编译选项,如 -std=c++11 -O3 -march=native |
CMAKE_CURRENT_BINARY_DIR | target编译目录 |
CMAKE_INCLUDE_PATH | 环境变量,非cmake变量 |
CMAKE_LIBRARY_PATH | 环境变量 |
CMAKE_STATIC_LIBRARY_PREFIX | 静态库前缀, Linux下默认为lib |
CMAKE_STATIC_LIBRARY_SUFFIX | 静态库后缀,Linux下默认为.a |
CMAKE_SHARED_LIBRARY_PREFIX | 动态库前缀,Linux下默认为lib |
CMAKE_SHARED_LIBRARY_SUFFIX | 动态库后缀,Linux下默认为.so |
BUILD_SHARED_LIBS | 如果为ON,则add_library默认创建共享库 |
CMAKE_INSTALL_PREFIX | 配置安装路径,默认为/usr/local |
CMAKE_ABSOLUTE_DESTINATION_FILES | 安装文件列表时使用ABSOLUTE DESTINATION 路径 |
CMAKE_AUTOMOC_RELAXED_MODE | 在严格和宽松的automoc模式间切换 |
CMAKE_BACKWARDS_COMPATIBILITY | 构建工程所需要的CMake版本 |
CMAKE_COLOR_MAKEFILE | 开启时,使用Makefile产生器会产生彩色输出 |
CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS | 用来控制IF ELSE语句的书写方式 |
常用命令
# cmake 最低版本需求
cmake_minimum_required(VERSION 3.10)
# project名称,会自动创建两个变量,PROJECT_SOURCE_DIR和PROJECT_NAME
project(xxx)
# 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
set(变量 文件名/路径/...)
# 添加编译选项
add_definitions(编译选项)
# 打印消息
message(消息)
# 规定.h头文件路径
include_directories(路径)
# 规定.so/.a库文件路径
link_directories(路径)
# 获取路径下所有的cpp/c/cc文件,并赋值给变量中
aux_source_directory(路径 变量)
# 编译子文件夹的CMakeLists.txt
add_subdirectory(子文件夹名称)
# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
add_library(库文件名称 STATIC 文件)
# 将.cpp/.c/.cc文件生成可执行文件
add_executable(可执行文件名称 文件)
# 对add_library或add_executable生成的文件进行链接操作
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)
参考:
【CMake】CMakeLists.txt的超傻瓜手把手教程(附实例源码)_Yngz_Miao的博客-CSDN博客_cmakelists.txt 教程