CMAKE 常用预定义变量

前言

  • cmake的内置命令不区分大小写

一. 目录路径变量

  • CMAKE_SOURCE_DIR
    最顶层CmakeLists.txt所在目录
    最顶层工程的源文件路径,即编译产物会存放到该路径(全路径/src)

  • CMAKE_BINARY_DIR
    最顶层工程的二进制路径,即编译产物会存放到该路径(全路径/build) -

  • CMAKE_CURRENT_SOURCE_DIR
    当前正在处理的CMakeLists.txt所在目录

  • CMAKE_CURRENT_LIST_DIR
    当前正在处理的列表文件的完整目录.(自2.8.3开始)
    当CMake处理项目中的列表文件时,该变量将始终设置为当前正在处理的列表文件(CMAKE_CURRENT_LIST_FILE)所在的目录.该值具有动态范围.当CMake开始处理源文件中的命令时,它将此变量设置为此文件所在的目录.当CMake完成处理来自文件的命令时,它将恢复先前的值.因此,宏或函数内部变量的值是调用调用堆栈上最底部条目的文件的目录,而不是包含宏或函数定义的文件的目录.

  • CMAKE_ARCHIVE_OUTPUT_DIRECTORY
    设置静态库的输出目录

	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
  • **CMAKE_LIBRARY_OUTPUT_DIRECTORY **
    设置动态库的输出目录
	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
  • PROJECT_SOURCE_DIR
    包含PROJECT()的最近一个CMakeLists.txt文件所在的文件夹(src)

  • PROJECT_BINARY_DIR
    当前工程的二进制路径,即编译产物会存放到该路径(build)

  • EXECUTABLE_OUTPUT_PATH
    设置可执行文件输出路径

	set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin/)
  • LIBRARY_OUTPUT_PATH

  • CMAKE_RUNTIME_OUTPUT_DIRECTORY

  • CMAKE_RUNTIME_OUTPUT_DIRECTORY
    设置可执行文件输出路径

	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/)

二. 检测变量

  • CMAKE_HOST_SYSTEM_NAME
    当前操作系统名字
  • CMAKE_HOST_SYSTEM_PROCESSOR
    当前运行主机CPU架构
  • CMAKE_SYSTEM_NAME
    构建目标操作系统名字
  • CMAKE_SYSTEM_PROCESSOR
    正在构建目标主机CPU的名称
  • CMAKE_SIZEOF_VOID_P
    检查空指针类型的大小。CMake的CMAKE_SIZEOF_VOID_P变量会告诉我们指针类型大小从而判断CPU是32位还是64位。
	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
	    set(CURRENT_PLATFORM "x64")
	else()
	    set(CURRENT_PLATFORM "x86")
	endif()
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386")
	message(STATUS "i386 architecture")
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")
	message(STATUS "i686 architecture")
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
	message(STATUS "x86_64 architecture")
else()
	message(STATUS "host processor architecture is unknown")
endif()
target_compile_definitions(arch-dependent
  PUBLIC "ARCHITECTURE=${CMAKE_HOST_SYSTEM_PROCESSOR}"
  )

三. 编译选项变量

  • CMAKE_CXX_COMPILER_ID
    C++编译器ID
  • CMAKE_C_COMPILER_ID
    C编译器ID
  • CMAKE_BUILD_TYPE
    生成器的构建类型
    CMAKE_CROSSCOMPILING
    交叉编译
    CMAKE_CXX_COMPILER_VERSION
    编译器版本号
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值