CMake中常见的预定义变量

路径相关

在 CMake 中,有一些常见的预定义变量,它们提供了有关项目、目录结构和构建环境的信息。这些变量可用于设置路径、传递参数、以及进行其他与构建过程相关的操作。

以下是一些常见的 CMake 变量:

  1. CMAKE_SOURCE_DIR:

    • 描述:项目顶层目录的绝对路径。
    • 使用示例:${CMAKE_SOURCE_DIR}/src
  2. CMAKE_BINARY_DIR:

  • 描述:构建目录的绝对路径。
  • 使用示例:${CMAKE_BINARY_DIR}/bin

CMAKE_BINARY_DIR 是 CMake 中的一个预定义变量,表示当前项目的二进制(构建)目录的绝对路径。 这个变量用于指定构建目标文件的位置。

  1. CMAKE_CURRENT_SOURCE_DIR:

    • 描述:当前处理的 CMakeLists.txt 文件所在的目录的绝对路径。
    • 使用示例:${CMAKE_CURRENT_SOURCE_DIR}/src
  2. CMAKE_CURRENT_BINARY_DIR:

    • 描述:当前处理的 CMakeLists.txt 文件的构建目录的绝对路径。
    • 使用示例:${CMAKE_CURRENT_BINARY_DIR}/bin
  3. CMAKE_INCLUDE_CURRENT_DIR:

    • 描述:将当前源文件目录添加到 include_directories() 中。
    • 使用示例:include_directories(${CMAKE_INCLUDE_CURRENT_DIR})
  4. CMAKE_MODULE_PATH:

    • 描述:包含额外的 CMake 模块的目录。
    • 使用示例:set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
  5. CMAKE_LIBRARY_OUTPUT_DIRECTORY:

    • 描述:动态链接库的输出目录。
    • 使用示例:set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
  6. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:

    • 描述:静态库的输出目录。
    • 使用示例:set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
  7. CMAKE_RUNTIME_OUTPUT_DIRECTORY:

  • 描述:可执行文件的输出目录。
  • 使用示例:set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  1. CMAKE_CXX_COMPILER_ID:
    • 描述:C++ 编译器的标识符。
    • 使用示例:if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")

其它

${CMAKE_PROJECT_NAME}

${CMAKE_PROJECT_NAME} 是在CMake中预定义的一个变量,它表示当前CMake项目的名称。在CMakeLists.txt文件中使用 project() 命令时,该变量会被自动设置为项目的名称。

在你的CMake项目中,如果你有如下的语句:

project(MyProject)

那么,${CMAKE_PROJECT_NAME} 的值就是 “MyProject”。

在CMake中,使用变量可以方便地引用项目的不同属性,比如名称、版本号等。在这个特定的情境中,${CMAKE_PROJECT_NAME} 用于获取项目的名称,以便在构建过程中动态地引用项目的名称。

例如,你可能会在设置输出目录、构建目标或生成文件名时使用 ${CMAKE_PROJECT_NAME}。这样,你的CMake配置可以更加灵活,不需要在多个地方硬编码项目的名称。

CMake variables官方文档

可以在 CMake 官方文档中找到更多的信息:CMake - Variables

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林树杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值