CMake: führen Sie ein makro/Funktion wie der Befehl von add_custom_command
Ich verwende eine externe Bibliothek, die bietet ein CMake-Funktion für die automatische code-Generierung, verwendet werden, in meinem CMakeLists. Das problem ist, dass, wenn ich ändern, eine CMakeLists dann die Funktion erneut ausgeführt wird, wird die Auslösung der Neukompilierung des neu generiert werden, aber unverändert Quellen. Ich bräuchte so etwas wie add_custom_command mit der Möglichkeit zum angeben der CMake-Funktion als BEFEHL anstatt eine ausführbare Datei, so dass die Funktion wird nur ausgeführt, wenn die automatisch generierten Dateien nicht bereits vorhanden sind.
Ist das machbar?? Wenn nicht, gibt es einen anderen Weg um dasselbe Ergebnis zu erhalten?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu verhindern, dass die Funktion ausgeführt, nur wickeln Sie es in
if
:Einfach!
Update: Um Sie auszuführen, wenn die config-Datei geändert hat, verwenden Sie einfach etwas komplizierter Zustand:
und verwenden
add_dependencies
- Befehl, um sicherzustellen, dass Ihre binären sein Wiederaufbau im Falle der config-Datei änderungen:NOT EXISTS
- check in Verbindung mitIS_NEWER_THAN
, weil letztere bereits impliziert die ehemalige.Werfen Sie einen Blick auf das SO ein post.
Rufen Sie Ihre Funktion in einem separaten CMake-Skript, dieses Skript aufrufen, mit
add_custom_target
undcmake -P
dann hinzufügen einer Abhängigkeit zu Ihrem binäre :Können Sie die cmake-Variablen Werte übergeben, wenn Sie rufen Sie das Skript z.B.