我知道以下 CMake 语句的含义:
cmake_minimum_required(VERSION 3.10)
我只是想知道这VERSION
部分在语法上是什么?
这是一个未引用的论点吗?如果是参数,则必须有一些其他参数选择。
但是根据here,这似乎VERSION
是该cmake_minimum_required()
命令的唯一选择。
如果是这样,为什么我们甚至需要明确指定这个参数?
根据此处,此命令设置变量 CMAKE_MINIMUM_REQUIRED_VERSION 。这里有某种字符串连接吗?所以我可以set_minimum_required(XXX <some_value>)
用来发送一个名为CMAKE_MINIMUM_REQUIRED_XXX
<some_value> 的任意变量?
加 1
我刚刚尝试在以下语句中使用CMakeLists.txt
:
cmake_minimum_required(XXX 123)
并且 cmake 抱怨说:
CMake Error at CMakeLists.txt:2 (cmake_minimum_required):
cmake_minimum_required called with unknown argument "XXX".
所以这似乎是一个争论。
但是根据这里的project()
命令,一个类似的VERSION
字符串被指定为一个选项。好像有点不协调。
添加 2
我刚刚尝试在以下语句中使用CMakeLists.txt
:
cmake_minimum_required(3.10)
并且 cmake 抱怨说:
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
cmake_minimum_required called with unknown argument "3.10".
因此,CMake 似乎依赖于VERSION
正确解释“3.10”参数的部分。所以我想这VERSION
也是一个选择。
既然有另一种可能的选择FATAL_ERROR
,就有必要有一个VERSION
选择。
所以总结一下我目前的理解:
CMake 语言的基本范式是:
CMake 命令只是根据参数和选项操作变量。
有些变量是需要操作的,有些是可选的。
对于必需的,它们的值通过参数指定。(有点像位置论点)
对于可选的,它们的值是通过相应选项后面的参数指定的。(有点像命名参数)
添加 3
从这里开始,对于VERSION
in cmake_minimum_required()
:
VERSION 是此函数的特殊关键字。版本的值跟在关键字后面。
所以在这里它被称为关键字而不是选项......
添加 4
关于 CMake 的一些感受...