• CMake 10 CMake的策略管理


    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)

  • 相关阅读:
    梦断代码阅读笔记一
    进度一
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    cf700E. Cool Slogans
    BZOJ1014: [JSOI2008]火星人prefix
    BZOJ2716: [Violet 3]天使玩偶
    cf1080F. Katya and Segments Sets
    BZOJ1354: [Baltic2005]Bus Trip
    灭绝树题集
    How Many Substrings?
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/13904276.html
Copyright © 2020-2023  润新知