CMAKE 常用预定义变量

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
    编译器版本号

你可能感兴趣的:(CMake,c++)