Ich möchte nur Lazy C ++ .lzz-Dateien schreiben und dann lzz vor einem Build ausführen, um .cpp- und .h-Dateien zu erzeugen, die in die endgültige Anwendung integriert werden, ähnlich wie moc mit Qt.
Gibt es eine Möglichkeit, dies zu tun?
Hier ist ein Beispiel, wie man das macht ... Zuerst müssen Sie das Programm lzz
finden, dafür verwenden Sie den Befehl find_program
:
Dies setzt LZZ_COMMAND
auf den Pfad des Compilers. Verwenden Sie dann einen benutzerdefinierten CMake-Befehl, um die LZZ-Datei in ihre C ++ - Header- / Implementierungsdateien zu kompilieren:
Das generiert die Dateien im aktuellen Build-Verzeichnis, falls Sie Out-of-Source-Builds ausführen. Sie müssen auch angeben, dass die Ausgaben generierte Dateien sind:
%Vor%Setzen Sie das alles zusammen und Sie erhalten eine CMakeLists.txt-Datei in etwa so:
%Vor%Sie würden wahrscheinlich auch einen Pfad und andere Optionen zu lzz hinzufügen. Wenn Sie all das Lazy C ++ - Zeug in eine Moduldatei gelegt und das aus der CMakeLists.txt aufgenommen haben, wäre es etwas sauberer. Aber das ist die Grundidee.
Ich wollte nur meine CMakeLists.txt teilen, die auf dem Rich-Script aufbaut. Die Dateien * .cpp und * .hpp hängen nun korrekt von den * .lzz-Dateien ab. Die * .lzz-Dateien werden dem Projekt hinzugefügt (das die obige Frage von absense beantwortet), aber mit dem Befehl source_group von den generierten Dateien getrennt gehalten.
Der einzige verbleibende Dealbreaker für mich ist die Unfähigkeit, die aktuelle Datei für * .lzz-Dateien zu kompilieren.
%Vor%