CMake脚本的命名规则是什么?

3
我知道CMake使用标准名称"CMakeLists.txt"和add_subdirectory函数来直接调用构建过程中的脚本。我有一些CMake代码,用它将文件转换成可以使用#include指令嵌入程序的C++字符串。我的根CMakeLists文件中相关的代码如下(当然是大大简化了):
add_custom_command(
  OUTPUT ${CMAKE_BINARY_DIR}/path/to/example.json.txt
  COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${STRING_PATH} -P BuildString.cmake
  DEPENDS ${CMAKE_SOURCE_DIR}/path/to/example.json
  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
add_custom_target(strings DEPENDS ${CMAKE_BINARY_DIR}/path/to/example.json.txt)

(在实际代码中,我为需要转换为字符串的每个文件调用add_custom_command,然后将所有输出文件名作为列表传递给add_custom_target。)
这是 BuildString.cmake:
set(DELIMITER "")

set(SOURCE ${CMAKE_ARGV1})
set(BUILD ${CMAKE_ARGV2})
set(PATH ${CMAKE_ARGV3})

file(READ ${SOURCE}/${PATH} STRING)
# add semicolons back into string
string(REGEX REPLACE ";" "\\\\;" STRING "${STRING}")
file(WRITE ${BUILD}/${PATH}.txt R\"${DELIMITER}\(${STRING}\)${DELIMITER}\")

正如您所看到的,BuildString.cmake只需输入一个文件,然后将该文件的内容(使用${DELIMITER}作为分隔符的C++原始字符串文字格式)输出到构建目录中。
我应该称呼BuildString.cmake为什么?惯例是使用所有小写字母和下划线(build_string.cmake),或者使用小驼峰式命名法(buildString.cmake)?还是名字应该是名词而不是动词(StringBuilder.cmake)?
(顺便说一句,如果您能看到任何不相关的方式来改进这些代码,那也将不胜感激。)
1个回答

5

对于CMake模块,有一个惯例:使用蛇形命名法的function_or_macro()在CamelCase格式的FunctionOrMacro.cmake文件中实现。因此,在怀疑时,请使用CamelCase。

并且使用动词,名词用于类。


是的,我以前见过那种惯例的使用。然而,在这种特定情况下,所讨论的脚本实际上并不包含函数或宏;相反,它本质上“充当”一个在构建时而不是在“CMake时间”调用的函数。同样的命名惯例是否仍然适用? - Sam Estep
2
@RedRoboHood:所有随CMake一起发布的cmake和shell脚本都遵循这个约定(不仅限于宏或函数)。但是对于脚本而言,我认为它并不像对于函数/宏定义那样强烈,因此我会说,如果您需要一个约定,请使用这个,因为没有其他的。但是请随意命名您的脚本。这就是我所说的“当有疑问时”。 - tamas.kenez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接