CMake之内置变量


我们承担ROS,FastDDS等通信中间件,C++,cmake等技术的项目开发和专业指导和培训,有10年+相关工作经验,质量有保证,如有需要请私信联系。

编译相关

  • PROJECT_NAME:由当前或上一级project 命令指定的名称
  • CMAKE_PROJECT_NAME:top level的CMakeLists.txt中project命令指定的project名称
  • CMAKE_CURRENT_SOURCE_DIR:当前CMakeLists.txt所在的绝对路径的目录
  • CMAKE_CURRENT_BINARY_DIR:编译的二进制文件所在的绝对路径目录
  • CMAKE_COMMAND:cmake可执行文件的全路径,这个常量对于cmake -E有用
  • PROJECT_BINARY_DIR:到build目录的全路径
  • CMAKE_FILES_DIRECTORY:生成cmake的所有文件的目录,一般为/CMakeFiles,运行message(STATUS "${PROJECT_BINARY_DIR}, ${CMAKE_FILES_DIRECTORY}") 显示:在这里插入图片描述
  • CMAKE_MODULE_PATH 指定include或find_package命令查找的路径
  • CMAKE_ERROR_DEPRECATED:如果是TRUE,对于废弃功能会报错。默认为FALSE
  • CMAKE_WARN_DEPRECATED:如果是非FALSE,使用废弃功能会报告警。默认为TRUE
  • CMAKE_BUILD_TYPE:指定要构建的类型,值为 Debug,Release,RelWithDebInfo,MinSizeRel等,该变量被设置为缓存变量(被谁设置为缓存变量?),可以通过缓存进行编辑:
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
  • CMAKE_CONFIGURATION_TYPES:可以对生成器的可用配置类型进行调整,该变量将接受一个值列表。(待验证
cmake .. -G"Visual Studio 12 2017 Win64" -D CMAKE_CONFIGURATION_TYPES="Release;Debug"
# 将为Release和Debug配置生成一个构建树。然后,可以使--config标志来决定构建这两个中的哪一个:
cmake --build . --config Release
  • CMAKE_LIBRARY_OUTPUT_DIRECTORY:构建的library文件存放的路径
  • CMAKE_ARCHIVE_OUTPUT_DIRECTORY:构建的archive目标文件存放的路径,这个变量用来初始化ARCHIVE_OUTPUT_DIRECTORY属性
  • CMAKE_RUNTIME_OUTPUT_DIRECTORY:构建的runtime目标文件存放的路径,这个变量用来初始化RUNTIME_OUTPUT_DIRECTORY属性
  • CMAKE_CXX_FLAGS/CMAKE_C_FLAGS:用于定义编译C++/C代码时所使用的编译器标志,官网定义在这里,例如:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")  # 启用C++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")  # 启用AddressSanitizer,只这一行就可以,不知道下行的作用?
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
  • BUILD_SHARED_LIBS 这个变量用于决定构建的是shared库还是static库。如果被设置为ON则为shared,否则默认为static库

安装相关

  • CMAKE_INSTALL_PREFIX:调用install() 命令时使用。指定安装位置前缀,在install的时候使用。在设置完之后,执行install时可以通过DESTINATION安装在该变量指定的位置。UNIX默认路径为/usr/local,Windows默认为C:/Program Files/${PROJECT_NAME}
    • 方式1:在cmake命令行指定:cmake -DCMAKE_INSTALL_PREFIX=<install_dir>
    • 方式2:cmake中设置,要加在project之后:set(CMAKE_INSTALL_PREFIX <install_dir>)
  • CMAKE_BINARY_DIR 构建树的最顶级目录。cmake_print_variables(CMAKE_BINARY_DIR CMAKE_SOURCE_DIR)验证结果为在这里插入图片描述

编译器相关

CMAKE_<LANG>_COMPILER 编译器的路径,可以是C,CXX,可以通过以下方式指定编译(未验证)器:

  1. set(CMAKE_C_COMPILER /full/path/to/gcc --arg1 --arg2)
  2. cmake ... -DCMAKE_C_COMPILER='qcc;--arg1;--arg2'
  3. 通过导出环境变量CXX(C++编译器)、CC(C编译器):env CXX=clang++

CMAKE_<LANG>_COMPILER_LOADED:如果为项目启用了语言<LANG>,则将设置为TRUE。
CMAKE_<LANG>_COMPILER_ID:编译器标识字符串,编译器供应商所特有。例如,GCC用于GNU编译器集合,AppleClang用于macOS上的Clang, MSVC用于Microsoft Visual Studio编译器。注意,不能保证为所有编译器或语言定义此变量。
CMAKE_COMPILER_IS_GNU<LANG>:如果语言<LANG>是GNU编译器集合的一部分,则将此逻辑变量设置为TRUE。注意变量名的<LANG>部分遵循GNU约定:C语言为CC, C++语言为CXX, Fortran语言为G77。值列表点击这个
CMAKE_<LANG>_COMPILER_VERSION:此变量包含一个字符串,该字符串给定语言的编译器版本。版本信息在major[.minor[.patch[.tweak]]]中给出。但是,对于CMAKE_<LANG>_COMPILER_ID,不能保证所有编译器或语言都定义了此变量。
CMAKE_SYSTEM_PROCESSOR:当前运行的CPU在CMake的名称
CMAKE_HOST_SYSTEM_PROCESSOR 当前正在为其构建的CPU的名称,在交叉编译时有着非常重要的作用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值