CmakeList.txt入门学习

注:根据已有的CmakeList.txt资源,学习变量和命令。
资源文件:https://download.csdn.net/download/m0_56066265/91435132?spm=1001.2101.3001.9500

CMAKE的变量名和含义:

变量 含义 用途
CMAKE_CURRENT_SOURCE_DIR 当前 CMakeLists.txt 文件 所在的目录(不适用于 .cmake 文件) 当 CMake 处理嵌套的 CMakeLists.txt(如通过 add_subdirectory())时,CMAKE_CURRENT_SOURCE_DIR 的值会自动切换到当前子目录的路径。
CMAKE_CURRENT_LIST_DIR 当前正在处理的 CMake 文件所在的目录路径,核心作用是 动态定位当前脚本文件的位置,方便在 CMake 项目中引用同级或子目录下的文件 例如,如果该命令写在 /project/src/CMakeLists.txt 中,则 ${CMAKE_CURRENT_LIST_DIR} 为 /project/src,区别:用 CMAKE_CURRENT_LIST_DIR 定位脚本位置,用 CMAKE_CURRENT_SOURCE_DIR 定位 CMakeLists.txt 位置。
CMAKE_SOURCE_DIR 项目根目录(顶层 CMakeLists.txt 的目录) /project
CMAKE_BINARY_DIR 顶层构建目录(即运行 cmake 的目录) /project/build
CMAKE_CURRENT_BINARY_DIR 当前 CMakeLists.txt 对应的构建目录(与源码目录结构一致) /project/build/src
CMAKE_MODULE_PATH 用于扩展 CMake 的模块搜索路径,方便加载自定义或第三方 .cmake 脚本 仅影响 include() 和 find_package() 的模块搜索路径(.cmake 文件)
CMAKE_PREFIX_PATH 用于指定 CMake 在查找依赖库、头文件或工具链时的根目录 影响所有 find_* 命令(如 find_package()、find_library()、find_path() 等)
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 用于指示 默认安装前缀(install prefix)是否被初始化过 当 CMake 首次运行时,如果没有显式指定CMAKE_INSTALL_PREFIX,CMake 会将其初始化为默认路径(如 /usr/local 或 C:/Program Files)。如果用户显式指定了 CMAKE_INSTALL_PREFIX,则该变量为 FALSE。
BUILD_SHARED_LIBS 用于控制是否将库(add_library() 创建的库)默认编译为动态库(shared library) 还是 静态库(static library) 当 BUILD_SHARED_LIBS=ON 时,add_library() 默认生成 动态库(.so / .dll / .dylib)
CMAKE_SIZEOF_VOID_P 用于检测目标系统的指针大小(以字节为单位)。 它的值直接反映了当前编译环境的架构是 32 位还是 64 位
CMAKE_C_FLAGS 是 CMake 中用来设置 C 编译器(如 gcc、clang、MSVC)的全局编译选项 的变量 通过修改 CMAKE_C_FLAGS,可以全局控制 C 代码的编译行为(如优化级别、警告选项、宏定义等)。它会影响所有通过 add_executable() 或 add_library() 创建的 C 目标(除非目标单独覆盖了编译选项)。
BUILD_TESTS 控制是否构建项目的测试代码(如单元测试、集成测试) 它通常通过 option() 命令定义,允许用户在配置阶段(cmake 命令执行时)决定是否启用测试构建
# 方法1:直接设置(覆盖原有值)
set(CMAKE_PREFIX_PATH "/path/to/your/libs")

# 方法2:追加路径(推荐,避免覆盖系统默认路径)
list(APPEND CMAKE_PREFIX_PATH "/path/to/your/libs")

Cmake的命令

命令 含义 用途
find_package() 用于在构建过程中查找和加载外部依赖库(第三方库或系统库) 让 CMake 自动找到所需的库,并设置相关的变量(如头文件路径、库文件路径等);优先在 CMAKE_PREFIX_PATH 指定的路径下查找依赖
message() 打印消息 类似QT的debug,python的printf
include() 主要作用是将外部 CMake 代码引入当前作用域,用于 引入 CMake 脚本 1. 引入其他 CMake 脚本文件;2. 使用 CMake 内置模块;3. 引入第三方 CMake 模块;
option() 用于定义一个 用户可配置的布尔选项,允许用户在配置阶段(cmake 命令运行时)通过命令行参数 (-D) 来启用或禁用该选项 提供一种灵活的方式,让用户决定是否启用某些功能(例如编译测试、启用调试日志等)
add_library() CMake 构建系统中用于定义库(静态库或动态库)的一个关键命令 将指定的源文件编译成一个库文件,供其他目标(如可执行文件或其他库)链接使用
file(GLOB …) 收集源文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值