我知道 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 仅接受一个输入文件并输出该文件的内容(使用 C++ 原始字符串文字表示法包装)${DELIMITER}
作为分隔符)进入构建目录。
我应该怎么称呼 BuildString.cmake?约定是使用所有小写字母和下划线(build_string.cmake),还是小驼峰式(buildString.cmake)?或者名称应该是名词而不是动词(StringBuilder.cmake)?
(顺便说一句,如果您能看到我可以改进任何代码的不相关方法,那也将不胜感激。)