2019独角兽企业重金招聘Python工程师标准>>>

SirDigit

CMake 手册详解(七)

CMD#11:build_command  获取构建该工程的命令行。

 build_command(<variable>  [CONFIGURATION <config>]  [PROJECT_NAME <projname>]  [TARGET <target>])

  把给定的变量<variable>设置成一个字符串,其中包含使用由变量CMAKE_GENERATOR确定的项目构建工具,去构建某一个工程的某一个目标配置的命令行。

  对于多配置生成器,如果忽略CONFIGURATION选项,CMake将会选择一个合理的默认值;而对于单配置生成器,该选项会被忽略。

  如果PROJECT_NAME选项被忽略,得到的命令行用来构建当前构建树上的顶层工程。

  如果TARGET选项被忽略,得到的命令行可以用来构建所有目标,比较高效的用法是构建目标all或者ALL_BUILD。

 build_command(<cachevariable> <makecommand>)

  不推荐使用以上的这种格式,但对于后相兼容还是有用的。只要可以,就要使用第一种格式。

  这种格式将变量<cachevariable>设置为一个字符串,其中包含从构建树的根目录,用<makecommand>指定的构建工具构建这个工程的命令。<makecommand>应该是指向msdev,devenv,nmake,make或者是一种最终用户指定的构建工具的完整路径。

CMD#12:cmake_minimum_required  设置一个工程所需要的最低CMake版本。

 cmake_minimum_required(VERSION major[.minor[.patch[.tweak]]]  [FATAL_ERROR])

  如果CMake的当前版本低于指定的版本,它会停止处理工程文件,并报告错误。当指定的版本高于2.4时,它会隐含调用:

 cmake_policy(VERSION major[.minor[.patch[.tweak]]])

  从而将cmale的策略版本级别设置为指定的版本。当指定的版本是2.4或更低时,这条命令隐含调用:

 cmake_policy(VERSION 2.4) 

  这将会启用对于CMake 2.4及更低版本的兼容性。

  FATAL_ERROR选项是可以接受的,但是CMake 2.6及更高的版本会忽略它。如果它被指定,那么CMake 2.4及更低版本将会以错误告终而非仅仅给出个警告。

CMD#13:cmake_policy  管理CMake的策略设置。
  随着CMake的演变,有时为了搞定bug或改善现有特色的实现方法,改变现有的行为是必须的。CMake的策略机制是在新的CMake版本带来行为上的改变时,用来帮助保持现有项目的构建的一种设计。每个新的策略(行为改变)被赋予一个"CMP<NNNN>"格式的识别符,其中"<NNNN>"是一个整数索引。每个策略相关的文档都会描述“旧行为”和“新行为”,以及引入该策略的原因。工程可以设置各种策略来选择期望的行为。当CMake需要了解要用哪种行为的时候,它会检查由工程指定的一种设置。如果没有可用的设置,工程假定使用“旧行为”,并且会给出警告要求你设置工程的策略。

  cmake_policy是用来设置“新行为”或“旧行为”的命令。如果支持单独设置策略,我们鼓励各项目根据CMake的版本来设置策略。

 cmake_policy(VERSION major.minor[.patch[.tweak]])

  上述命令指定当前的CMakeLists.txt是为给定版本的CMake书写的。所有在指定的版本或更早的版本中引入的策略会被设置为使用“新行为”。所有在指定的版本之后引入的策略将会变为无效(unset)。该命令有效地为一个指定的CMake版本请求优先采用的行为,并且告知更新的CMake版本给出关于它们新策略的警告。命令中指定的策略版本必须至少是2.4,否则命令会报告一个错误。为了得到支持早于2.4版本的兼容性特性,查阅策略CMP0001的相关文档。

  cmake_policy(SET CMP<NNNN> NEW)

  cmake_policy(SET CMP<NNNN> OLD)

  对于某种给定的策略,该命令要求CMake使用新的或者旧的行为。对于一个指定的策略,那些依赖于旧行为的工程,通过设置策略的状态为OLD,可以禁止策略的警告。或者,用户可以让工程采用新行为,并且设置策略的状态为NEW。

 cmake_policy(GET CMP<NNNN> <variable>)

  该命令检查一个给定的策略是否设置为旧行为或新行为。如果策略被设置,输出的变量值会是“OLD”或“NEW”,否则为空。

  CMake将策略设置保存在一个栈结构中,因此,cmake_policy命令产生的改变仅仅影响在栈顶端的元素。在策略栈中的一个新条目由各子路径自动管理,以此保护它的父路径及同层路径的策略设置。CMake也管理通过include()和find_package()命令加载的脚本中新加入的条目,除非调用时指定了NO_POLICY_SCOPE选项(另外可参考CMP0011)。cmake_policy命令提供了一种管理策略栈中自定义条目的接口:

cmake_policy(PUSH)
       cmake_policy(POP)

  每个PUSH必须有一个配对的POP来去掉撤销改变。这对于临时改变策略设置比较有用。

  函数和宏会在它们被创建的时候记录策略设置,并且在它们被调用的时候使用记录前的策略。如果函数或者宏实现设置了策略,这个变化会通过调用者(caller)一直上传,自动传递到嵌套的最近的策略栈条目。

<<<------------- 欢迎转载;转载请标明出处。 ------------->>>

转载于:https://my.oschina.net/iamhere/blog/369296

CMake 手册详解(七)相关推荐

  1. CMake手册详解 (十二)

    2019独角兽企业重金招聘Python工程师标准>>> SirDigit CMake手册详解 (十二) CMD#30:find_library查找一个库文件 find_library ...

  2. CMake 手册详解(五)

    CMake 手册详解(五) CMD#2: add_custom_target 添加一个目标,它没有输出:这样它就总是会被构建. add_custom_target(Name [ALL] [comman ...

  3. CMake 手册详解(十八)

    2019独角兽企业重金招聘Python工程师标准>>> SirDigit CMake 手册详解(十八) CMD#45 : include从给定的文件中读取CMake的列表文件. in ...

  4. CMake手册详解 (十四)

    2019独角兽企业重金招聘Python工程师标准>>> SirDigit CMake手册详解 (十四) CMD#32 : find_path搜索包含某个文件的路径 find_path ...

  5. CMake 手册详解(四)

    CMake手册的客套话总算说完了,开始进入正题.第一部分是CMake命令.命令就相当于命令行下操作系统提供的各种命令,重要性不言而喻:可以说,这些命令是CMake构建系统的骨架.CMake 2.8.3 ...

  6. CMake 手册详解之一 语法

    来源 http://www.cnblogs.com/coderfenghc/tag/cmake/ 公司的一个项目使用CMake作为跨平台构建工具:业务有需求,当然要好好研读一下官方的技术手册.目前的计 ...

  7. CMake 手册详解(二十二)

    原文地址 http://www.cnblogs.com/coderfenghc/archive/2012/10/20/2712806.html CMD#65: separate_arguments 将 ...

  8. CMake使用详解二(多文件编译)

    文章目录 1 同一目录,多个源文件 1.1 创建2个源文件 1.2 编写CMakeLists.txt 1.3 编译项目 2 多个目录,多个源文件 2.1 在不同的目录下新建源代码 2.2 编写CMak ...

  9. CMake使用详解一(单文件编译)

    文章目录 1 什么是CMake 2 单个源文件编译 2.1 编写单个cpp文件 2.2 编写CMakeLists.txt 2.3 使用`cmake .`和`make`编译项目 2.3.1 执行`cma ...

  10. 说明使用tc编程的一般步骤 c语言,TC编程手册详解-完整版.doc

    TC编程手册详解-完整版 TC编程手册详解-完整版 本文是TC的第一部分,主要介绍一些TC相关的基础知识,并着重针对循环.变量等TC基本概念中的易混的淆部分加以辨析,即是一份编程初学者的指南,也可算作 ...

最新文章

  1. unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)
  2. Perl 语言入门6-9
  3. 计算机网络基础知识第二章要点
  4. activiti如何最后一次提交事务_2020最后一次水逆,十二星座如何防水逆?
  5. FlygonTiebaToolkit 的开源决定
  6. title属性样式 原生dom_HTML DOM title 属性
  7. 你不知道的 Web 性能优化 | 原力计划
  8. gyp安装,及breakpad上的使用方法
  9. Intel汇编与程序设计第五版3.4定义数据小节
  10. OpenCV 人脸识别DNN face detector文件下载(opencv_face_detector.pbtxt;opencv_face_detector_uint8.pb;。。。。)
  11. 亚洲最佳电影TOP100出炉 你看过几部?
  12. 效率软件:微软远程桌面安卓版
  13. 基于SpringBoot体育用品购物商城-协同过滤推荐算法项目源代码
  14. AMP—Rover移植
  15. 网络中的中间商(CDN)
  16. 某程序员在网吧敲代码,出类拔萃,网友:为何我被打的却是我
  17. fcpx如何用光流法_5分钟掌握FCPX所有剪辑技巧
  18. 电子沙盘系统android,电子沙盘指挥系统功能介绍
  19. 伪原创视频的处理技巧
  20. 闪聚支付 第3章-支付宝接入指南

热门文章

  1. 羊车门问题看到吐血后的理解----一千七百字小作文+Python代码验证,帮你从质到量上理解,这再看不明白算我输!
  2. 用python画一只皮卡丘_用python画一只可爱的皮卡丘实例
  3. sping jdbc 链接mysql_java项目使用spring jdbc连接数据库
  4. vivox6Android版本,vivo x6有几个版本?vivo x6各版本区别对比评测
  5. 「译」创建一个Hexo主题-Part2:其他页面
  6. Kubernetes Ingress 日志分析与监控的最佳实践 1
  7. 后端Java架构师图谱(架构师必经之路)
  8. 传统HTML页面实现模块化加载
  9. 如何自定义一个注解(@Annotation)
  10. python3爬虫必学Xpath,快速使用lxml.etree