码迷,mamicode.com
首页 > 其他好文 > 详细

CMake 10 CMake的策略管理

时间:2020-10-31 02:31:28      阅读:8      评论:0      收藏:0      [点我收藏+]

标签:nim   维护   set   没有   可靠   机制   使用   移除   策略   

CMake的策略管理用于维护版本的向后兼容,从版本2.0开始引入。

每个新发布版本一般都会引入一些新的策略,每个策略都会有一个标识号,格式

为CMP<NNNN>,<NNNN>对应四个0到9的整数。每个策略都在文档中描述了OLD和NEW的行为,以及引入的原因。

CMake的策略是一种弃用机制,并不是可靠特性的切换,因此,策略的OLD行为一般不可取,因为在未来的版本中可能被抛弃。

cmake_policy(VERSION <min>[…<max>]) 通过版本来设置策略

<min>:最小版本,至少为2.4,至多为当前安装的版本号

<max>:最大版本,至少为<min>,可以大于当前安装版本号,如果当前安装版本小于3.12,…被认为是版本组成的分隔符,从而会忽略…<max>,因此会按3.12之前的版本基于<min>的策略来执行。

调用cmake_minimum_required会隐式调用cmake_policy,因此,如果没有特别的策略要指定,可以直接通过调用cmake_minimum_required即可。

也可以直接使用cmake_policy显示设置策略的行为,为OLD或为NEW。

cmake_policy(SET CMP<NNNN> NEW)

cmake_policy(SET CMP<NNNN> OLD) OLD行为为弃用定义,即在未来的版本中可能被移除。

通过cmake_policy(GET CMP<NNNN> <var>)获取指定策略的行为,值存放到<var>中。

 

CMake用栈来保存策略设置。cmake_policy的操作只影响栈顶。对于每一个子目录,策略栈自动管理新入口,从而保证孩子目录的父目录和兄弟目录不被破坏。对于include()和find_package()指令的脚本,也有新的入口,除非指定了NO_POLICY_SCOPE选项。

cmake_policy(PUSH)

cmake_policy(POP)

CMake 10 CMake的策略管理

标签:nim   维护   set   没有   可靠   机制   使用   移除   策略   

原文地址:https://www.cnblogs.com/merlinzjl/p/13904276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!