Für mein Projekt würde ich gerne einen Befehl ausführen, der eine Datei generiert, die installiert ist (mit anderen Worten, die generierte Datei ist nur eine Datendatei, kein Quellcode).CMake: Wie kann man add_custom_command nur ausführen, wenn die Eingabe geändert wird?
Im Moment habe ich die folgenden in meinem 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
)
Dies funktioniert gut, aber weil ALL
zu add_custom_target()
übergeben wird, wird der Befehl jedes Mal, wenn ich make
laufen ausgeführt.
Gibt es eine Möglichkeit, dies zu ändern, so dass der Befehl nur ausgeführt wird, wenn die Eingabedatei geändert wird? Es kann eine Weile dauern, bis der Befehl abgeschlossen ist. Im Idealfall wird er nur ausgeführt, wenn es erforderlich ist.
Vielen Dank im Voraus! diese
'OUTPUT outputfile.txt' kann' OUTPUT output.txt' sein? –
Ich bekomme Ihre Frage nicht. 'dosomething' hängt von' inputfile.txt' ab und erzeugt 'output.txt', daher wird' output.txt' nur dann neu generiert, wenn 'inputfile.txt' sich geändert hat. Ist das nicht der Fall? Oder habe ich etwas vermisst. – usr1234567