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

一    变量

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

①    目的

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

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产生的缓存

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值