cmake(二十四)Cmake的内置变量

  • Post author:
  • Post category:其他




变量

分类: 变量的'类型'、变量的'功能'



目的

++++++++++++梳理变量的'目的'++++++++++++

1)'看懂'别人的代码,知道执行'每条cmake指令'所处的'位置'

2)对比'变量'的'异同',更好的进行抉择

3)代码'规范',尽量保持'一种风格'

例外: 多个变量可以表示'同一个含义'时候,应根据'上下文'合理取舍



内置


命令


变量

${CMAKE_COMMAND}  -->'cmake'

${CMAKE_MAKE_PROGRAM} -->'gmake|make'



系统信息

­CMAKE_MAJOR_VERSION:cmake 主版本号,比如 3.4.1 中的 3
­CMAKE_MINOR_VERSION:cmake 次版本号,比如 3.4.1 中的 4
­CMAKE_PATCH_VERSION:cmake 补丁等级,比如 3.4.1 中的 1
­CMAKE_SYSTEM:系统名称,比如 Linux-­2.6.22
­CMAKE_SYSTEM_NAME:'不包含版本的系统名',比如 Linux
­CMAKE_SYSTEM_VERSION:'系统(内核)版本',比如 2.6.22
­CMAKE_SYSTEM_PROCESSOR:'处理器名称',比如 i686

+++++++++"判断平台"+++++++++
­UNIX:在所有的类 UNIX 平台下该值为 'TRUE',包括 OS X 和 cygwin
­WIN32:在所有的 win32 平台下该值为 TRUE,包括 cygwin



环境变量

'设置'和'使用'环境变量

1)'设置'环境变量

set(ENV{变量名} 值)

备注:不需要加'$'符号

2)'使用'环境变量

$ENV{Name}

eg:message(STATUS "HOME dir: $ENV{HOME}")

1)

项目结构

2)

CMakeLIsts.txt

3)

测试

⑤    关于

目录



预定义

变量

说明: 本文主要以'外部编译','多级'目录,讲解'目录结构'

涉及: CURRENT'中间'、CMAKE'开头'、PROJECT'开头' 

1)

目录结构

2) CMakeLists.txt

备注: 根项目和subDir目录下的'CMakeLists.txt'关于message的信息'相同'

3)

测试

4)

补充

1) LIBRARY_OUTPUT_DIR   -->重新定义'目标链接库文件'的存放目录

2) BINARY_OUTPUT_DIR    -->'可执行二进制'存放的目录

3) CMAKE_MODULE_PATH    -->工程复杂,编写一些cmake模块'[.cmake结尾的文件]',通过SET来指定这个变量

备注: ${PROJECT_SOURCE_DIR}/cmake),然后可以用'INCLUDE命令'来调用自己的模块

思考: '.cmake脚本'和'CMakeLists.txt'文件的区别?

4) EXECUTABLE_OUTPUT_PATH -->重新定义'目标二进制可执行文件'的存放位置

5) CMAKE_CURRENT_BINARY_DIR:'target' 编译目录

补充: 如果'内部编译',可以通过set方式'${}/build'形式自动创建对应目录,并在'build'里面编译


CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_LIST_DIR之间的区别

⑥    主要

开关

选项

1)BUILD_SHARED_LIBS:这个开关用来'控制默认'的'库编译'方式

备注: 如果'不进行'设置,而使用 add_library 又'没有指定库类型'的情况下,'默认编译'生成的库都是'静态库'

eg:set(BUILD_SHARED_LIBS ON)后默认生成的为'动态库'

2)CMAKE_C_FLAGS:设置 'C 编译'选项,也可以通过指令 add_definitions() 添加

3)CMAKE_CXX_FLAGS:设置 'C++ 编译'选项,也可以通过指令 add_definitions() 添加

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

备注: add_definitions(-DENABLE_DEBUG -DABC) 参数之间用'空格'分隔


C/C++相关参考


cmake变量



缓存变量


参考博客


案例参考

备注: CMakeLists.cache里面'默认'的CACHE变量



option变量



小结


彻底清除cmake产生的缓存



版权声明:本文为wzj_110原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。