Wie erstelle ich automatisch generierten Code, wenn sich der Generator oder die Eingabe in CMake ändert?

Ich arbeite an einem Quellcode-Repository, das C ++ - Code generiert, indem ein Python-Skript ausgeführt wird, das Header und Implementierung ausgibt. Dieser Code wird anschließend kompiliert und mit meinen Bibliotheken und ausführbaren Dateien verknüpft. Ich weiß, dass sich der generierte Code nur ändert, wenn eine der beiden Bedingungen erfüllt ist:

Der Generatorcode selbst ändert sichDie Eingabe (eine XML-Datei) für den Generator ändert sich

Ich möchte cmake verwenden, um den Erstellungsprozess zu verwalten. Im Moment benutze ichexecute_process, um den Generator abzufeuern. Dies wird jedoch jedes Mal ausgeführt, wenn cmake ausgeführt wird und die Dateien berührt werden. Dadurch wird der generierte Code neu kompiliert und zu meiner Gesamtkompilierungszeit hinzugefügt.

Ich möchte auch sicherstellen, dass der generierte Code immer vor meinen Bibliotheken ausgeführt wird. Mit anderen Worten, ich möchte, dass die Bibliotheken vom laufenden Generator abhängen.

Was ist der richtige Weg, um mit einer solchen Situation in cmake umzugehen? Ich habe diese vorherige Antwort gesehen: "Lassen Sie CMake ein Ziel im Projekt ausführen, bevor Sie eine Bibliothek erstellen. ". Dies setzt jedoch voraus, dass die Ausgabe des Codegenerators im Voraus bekannt ist. Mein Codegenerator generiert eine variable Anzahl von Dateien.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage