gpt4 book ai didi

cmake - CMake 脚本的命名约定是什么?

转载 作者:行者123 更新时间:2023-12-01 12:34:20 25 4
gpt4 key购买 nike

我知道 CMake 使用标准名称“CMakeLists.txt”和 add_subdirectory 函数在构建过程中直接调用脚本。

我有一些 CMake 代码,用于将文件转换为 C++ 字符串,然后可以使用 #include 指令将这些字符串烘焙到程序中。我的根 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)?

(作为旁注,如果您能看到我可以改进任何此代码的不相关方式,那也将不胜感激。)

最佳答案

CMake 模块有一个约定:snake-case function_or_macro() 在 CamelCase FunctionOrMacro.cmake 文件中实现。因此,如有疑问,请使用 CamelCase。

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

关于cmake - CMake 脚本的命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31034014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com