CMake 函数参数——为什么它们偶尔是大写的?
CMake function arguments -- why are they occasionally uppercase?
我一直在梳理 CMake 文档一段时间,现在试图找出为什么有些函数参数大写而有些没有。我希望有人能够解释事物被资本化的模式,或者至少向我指出文档的方向。该文档 https://cmake.org/cmake/help/v3.0/manual/cmake-language.7.html#cmake-language-7 几乎没有解释为什么某些东西被大写。
以我目前的理解,
大写参数可以是:
- 函数的关键字参数
- 旗帜
- 属性
小写参数是:
- 函数的其他类型输入
这是一个 CMake 文件的示例,您可以帮我分析一下吗?
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
include(SomeLib)
include_directories(include)
add_library(mylib SHARED src/main.cpp)
target_link_libraries(mylib ${boost_LIBRARIES})
install(TARGETS mylib DESTINATION lib)
VERSION
我猜是关键字,
SHARED
可能也是关键字,或者可能是 属性,
TARGETS
和DESTINATION
也是关键词?
编写 CMake 代码没有某种公认的风格,因此您可能会遇到任何问题。您通常看到的是开发人员 (Kitware) 使用的历史上某种程度上被接受的样式,并被许多其他人采用。
通常您对 CMake 命令、宏和函数名称使用小写字母,因此要更正您的代码,您需要对版本命令使用小写字母:cmake_minimum_required(VERSION 2.8)
因为它是一个命令。
有些命令有命名参数,有些没有。通常命名参数是大写的。在您的示例中,TARGETS
、VERSION
、SHARED
和 DESTINATION
都是命名参数(CMake 调用关键字)。它们可以是任何大小写,但我们只是习惯于将它们设为大写。这些参数通过函数和宏的 cmake_parse_arguments 帮助进行了解析。由于所有命令都是用 C++ 实现的,因此参数解析是用 C++ 为它们完成的(可能使用相同的“命令”)。
除了命令名称外,局部变量的函数中可能会使用小写字母,但这尚未确定,您可以在野外找到任何类型的混合。
这是@ixSci 回答的一个插件。
CMake 的一些历史。
查看 2003 年的 this message,询问是否有计划允许小写命令。
No plans on changing this.
变化很大。查看 9 年前的 this commit,它将一堆现有代码从大写更改为小写。这是引述:
Ancient CMake versions required upper-case commands.
Later command names became case-insensitive.
Now the preferred style is lower-case.
现在,CMake 命令是 case-insensitive 并且仍然是 backwards-compatible。但是,CMake 变量保持 case-sensitive.
此外,CMake 2.6引入了cmake_policy
,可以用来指定特定的语法版本。也许你怀旧了...
我一直在梳理 CMake 文档一段时间,现在试图找出为什么有些函数参数大写而有些没有。我希望有人能够解释事物被资本化的模式,或者至少向我指出文档的方向。该文档 https://cmake.org/cmake/help/v3.0/manual/cmake-language.7.html#cmake-language-7 几乎没有解释为什么某些东西被大写。
以我目前的理解, 大写参数可以是:
- 函数的关键字参数
- 旗帜
- 属性
小写参数是:
- 函数的其他类型输入
这是一个 CMake 文件的示例,您可以帮我分析一下吗?
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
include(SomeLib)
include_directories(include)
add_library(mylib SHARED src/main.cpp)
target_link_libraries(mylib ${boost_LIBRARIES})
install(TARGETS mylib DESTINATION lib)
VERSION
我猜是关键字,
SHARED
可能也是关键字,或者可能是 属性,
TARGETS
和DESTINATION
也是关键词?
编写 CMake 代码没有某种公认的风格,因此您可能会遇到任何问题。您通常看到的是开发人员 (Kitware) 使用的历史上某种程度上被接受的样式,并被许多其他人采用。
通常您对 CMake 命令、宏和函数名称使用小写字母,因此要更正您的代码,您需要对版本命令使用小写字母:cmake_minimum_required(VERSION 2.8)
因为它是一个命令。
有些命令有命名参数,有些没有。通常命名参数是大写的。在您的示例中,TARGETS
、VERSION
、SHARED
和 DESTINATION
都是命名参数(CMake 调用关键字)。它们可以是任何大小写,但我们只是习惯于将它们设为大写。这些参数通过函数和宏的 cmake_parse_arguments 帮助进行了解析。由于所有命令都是用 C++ 实现的,因此参数解析是用 C++ 为它们完成的(可能使用相同的“命令”)。
除了命令名称外,局部变量的函数中可能会使用小写字母,但这尚未确定,您可以在野外找到任何类型的混合。
这是@ixSci 回答的一个插件。
CMake 的一些历史。
查看 2003 年的 this message,询问是否有计划允许小写命令。
No plans on changing this.
变化很大。查看 9 年前的 this commit,它将一堆现有代码从大写更改为小写。这是引述:
Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case.
现在,CMake 命令是 case-insensitive 并且仍然是 backwards-compatible。但是,CMake 变量保持 case-sensitive.
此外,CMake 2.6引入了cmake_policy
,可以用来指定特定的语法版本。也许你怀旧了...