cmake add_custom_command
Bin ich zu kämpfen mit add_custom_command. Lassen Sie mich erklären, das problem im detail.
Habe ich diesen Satz von cxx-Dateien und hxx-Dateien. Ich betreibe ein perl-Skript auf jedem von Ihnen zu erzeugen, die eine bestimmte Art von übersetzung. Der Befehl sieht wie
perl trans.pl source.cxx -o source_cxx_tro
ähnlich auch für den Kopf.hxx-Dateien sowie.
So, ich werde am Ende mit einer mehrere Befehle (jeweils eine Datei)
Dann Lauf ich ein anderes perl-scripn auf die generierte Ausgabe dieser Befehle (source_cxx_tro, header_hxx_tro)
perl combine.pl source_cxx_tro header_hxx_tro -o dir.trx
dir.trx ist die Ausgabe-Datei.
Ich habe so etwas wie dieses.
Loop_Over_All_Files()
Add_Custom_Command (OUTPUT ${trofile} COMMAND perl trans.pl ${file} -o ${file_tro})
List (APPEND trofiles ${file_tro})
End_Loop()
Add_Custom_Command (TARGET LibraryTarget POST_BUILD COMMAND perl combine.pl ${trofiles} -o LibraryTarget.trx)
Was ich erwarte ist, wenn ein Gebäude der post build-Ziel, die trofiles wird erst gebaut. aber es ist nicht der Fall. Die ${trofiles} sind nicht immer gebaut und damit den post-build-Befehl endet in einem Misserfolg.
Gibt es eine Möglichkeit, ich kann sagen, das POST_BUILD Befehl hängt von der vorherigen benutzerdefinierten Befehl ?
Irgendwelche Vorschläge ?
Vielen Dank im Voraus,
Surya
InformationsquelleAutor der Frage Surya | 2010-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden add_custom_command ist eine Datei zu erstellen, transformation Kette
machen und die Letzte transformation eine first class entity in cmake durch die Verwendung add_custom_target. Standardmäßig ist dieses Ziel nicht bauen, es sei denn, Sie markieren Sie es mit ALLEN, oder lassen Sie ein weiteres Ziel, dass gebaut wird, abhängen.
InformationsquelleAutor der Antwort Maik Beckmann
Sie möchten, erstellen Sie ein benutzerdefiniertes Ziel, verbraucht der Ausgabe der benutzerdefinierten Befehle. Dann nutzen Sie ADD_DEPENDENCIES um sicherzustellen, dass die Befehle werden ausgeführt, in der richtigen Reihenfolge.
Werden könnte dieser Art in der Nähe, was Sie wollen:
http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_use_CMake_to_build_LaTeX_documents.3F
Grundsätzlich add_custom_command für jede Datei erzeugt, sammeln Sie eine Liste von Dateien (trofiles), dann verwenden Sie add_custom_target mit ein, HÄNGT von der Liste trofiles. Dann nutzen Sie add_dependencies, um die LibraryTarget hängt von der custom-Ziel. Dann die custom target gebaut werden sollte, bevor die Bibliothek Ziel ist gebaut.
InformationsquelleAutor der Antwort Bill Hoffman