CMake:如何在输入改变时使add_custom_command执行?

时间:2014-09-14 01:20:04

标签: cmake

对于我的项目,我想运行一个生成安装文件的命令(换句话说,生成的文件只是一个数据文件,而不是源代码)。

我目前在我的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时都会执行该命令。

我有什么方法可以改变这个命令,只有在输入文件被更改时才会运行命令?该命令可能需要一段时间才能完成,因此理想情况下,除非需要,否则它将无法运行。

提前致谢!

1 个答案:

答案 0 :(得分:0)

纠正这个:

add_custom_command(
    OUTPUT outputfile.txt

用这个:

add_custom_command(
    OUTPUT output.txt

然后我的猜测是你根本不需要add_custom_target。如果我错了,只需从ALL中移除add_custom_target,您就可以了。