对于我的项目,我想运行一个生成安装文件的命令(换句话说,生成的文件只是一个数据文件,而不是源代码)。
我目前在我的CMakeLists.txt
中有以下内容add_custom_command(
OUTPUT outputfile.txt
COMMAND dosomething ${CMAKE_CURRENT_SOURCE_DIR}/inputfile.txt
${CMAKE_CURRENT_BINARY_DIR}/output.txt
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/inputfile.txt
)
add_custom_target(
run_gen_command
ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output.txt
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/output.txt
DESTINATION ${CMAKE_INSTALL_DATADIR}/somewhere
)
这很好用,但由于ALL
传递给add_custom_target()
,每次运行make
时都会执行该命令。
我有什么方法可以改变这个命令,只有在输入文件被更改时才会运行命令?该命令可能需要一段时间才能完成,因此理想情况下,除非需要,否则它将无法运行。
提前致谢!
答案 0 :(得分:0)
纠正这个:
add_custom_command(
OUTPUT outputfile.txt
用这个:
add_custom_command(
OUTPUT output.txt
然后我的猜测是你根本不需要add_custom_target
。如果我错了,只需从ALL
中移除add_custom_target
,您就可以了。