ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CMake 变量

2022-03-27 13:32:31  阅读:150  来源: 互联网

标签:set CMake 变量 作用域 缓存 variable Scope


Cmake Variable

Variable names are case-sensitive and may consist of almost any text.

  • 变量的作用域:
    Function Scope: 在执行一个函数的时候会创建一个新的作用域, 当前作用域中的所有变量会继承到新的作用域.
    Directory Scope: 每个目录也会有自己的变量作用域, 也会继承父目录中的所有变量.
    Persistent Scope: 全局作用域, 放缓存变量(Cache Variable).

变量查找时, 会依次查找函数调用栈和当前目录里的变量, 都没有时才会用缓存变量.

set/unset

  • set normal variable
set(<variable> <value>... [PARENT_SCOPE])

cache variable

  • 缓存变量, 可以在命令行中设置的变量, 缓存在CMakeCache.txt

  • 在CmakeLists.txt中声明缓存变量:

set(<variable> <value>... CACHE <type> <docstring> [FORCE])

If the cache entry does not exist prior to the call or the FORCE option is given
then the cache entry will be set to the given value.

只有加了FORCE才会覆盖已有的缓存变量的值.

  • 在命令行中设置缓存变量:
$ cmake ../ D<var>=<value>

environment variable

set(ENV{<variable>} [<value>])

# invocation: 
$ENV{foo}

查看帮助信息:

$ cmake --help-variable-list
$ cmake --help-variable PROJECT_BINARY_DIR

标签:set,CMake,变量,作用域,缓存,variable,Scope
来源: https://www.cnblogs.com/snail-0304/p/16062579.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有