我读了:
我想做类似的事情,但不是复制文件,而是生成一个文件。如果那不在自定义命令中,我会写:
file(WRITE "generated.c" "int main() { return 0; }")
但它似乎并不cmake -E
直接支持这一点。我应该怎么做(除了运行依赖于平台的东西)?
我读了:
我想做类似的事情,但不是复制文件,而是生成一个文件。如果那不在自定义命令中,我会写:
file(WRITE "generated.c" "int main() { return 0; }")
但它似乎并不cmake -E
直接支持这一点。我应该怎么做(除了运行依赖于平台的东西)?
使用 CMake 的脚本模式 ( -P
)。在CMakeLists.txt
:
cmake_minimum_required(VERSION 3.21)
project(test)
file(
GENERATE
OUTPUT "gen.cmake"
CONTENT [[
cmake_minimum_required(VERSION 3.21)
file(WRITE "${OUT}" "int main() { return 0; }")
]])
add_custom_command(
OUTPUT generated.c
COMMAND ${CMAKE_COMMAND} -DOUT=generated.c
-P gen.cmake
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gen.cmake"
)
add_executable(main "${CMAKE_CURRENT_BINARY_DIR}/generated.c")
请注意,如果您生成的文件具有与配置相关的内容,那么您必须$<CONFIG>
在文件名中包含某处。有关更多详细信息,请参阅此处的文档:https ://cmake.org/cmake/help/latest/command/file.html#generate