Ich möchte ein Top-Level benutzerdefinierte Ziel haben, und verschachtelte Submodule, die in der Lage sind, dieses bereits existierende Ziel zu erweitern, indem Sie/custom_command hinzufügen. Jetzt stehe ich vor einem Problem: Wenn add_custom_command(TARGET target_name ...)
nicht in einer Datei verwendet wird, in der das Ziel definiert ist (das Ziel wird auf CMakeLists.txt auf oberster Ebene definiert), wird dieser custom_command einfach ignoriert.cmake binde benutzerdefinierten Befehl an ein existierendes Top-Level-Ziel fehlschlägt
Details:
1) custom_target auf der obersten Ebene erstellt CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
add_custom_target(custom_tg
COMMAND ls > custom_target.txt
)
add_custom_command(TARGET custom_tg
COMMAND ls > custom_command1.txt
)
add_subdirectory(sub)
2) im Unterverzeichnis "sub" gibt es andere CMakeLists.txt (Modul) was ich gehofft habe ist in der Lage das existierende Ziel mit einem benutzerdefinierten Befehl zu erweitern.
add_custom_command(TARGET custom_tg
COMMAND ls > custom_command2.txt
)
3) Wenn ich Verzeichnis erstellen bauen und
cmake .. && make custom_tg
die Ausgabedateien sind custom_target.txt und custom_command1.txt laufen, aber es gibt keine custom_command2.txt und das ist eigentlich mein Problem.
Wenn ich sehe in build/CMakeFiles/custom_tg.dir/build.make Ich sehe keine Erwähnung über custom_command2.txt dort. Hier ist Inhalt von build.make Datei: http://pastebin.com/zVVS4sYL.
Eigentlich finde ich kann keine Erwähnung über custom_command2.txt in Baum von Dateien, die von CMake erzeugt, und dies scheint mir seltsam.
Wir freuen uns auf Ihre Hilfe.
Sorry, sicher, es ist akzeptiert, ich habe versucht, es zu bewerten, aber ich habe Nachricht "Danke für das Feedback! Sobald Sie insgesamt 15 Ruf verdienen, werden Ihre Stimmen die öffentlich angezeigte Post-Score ändern" –
Das ist upvoting. Sehen Sie sich https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work an – renemilk