Kann CMakeLists.txt von einer Datei abhängen, die von einer Funktion analysiert wird?

Ich bin ein Neuling in CMake und beginne zum ersten Mal mit einem größeren Projekt, das aus vielen Teilprojekten besteht.

Aus bestimmten Gründen (nachfolgend für Neugierige beschrieben) habe ich bereits eine Reihe von Include-Dateien, die Informationen zu den für jedes CMake-Ziel (lib oder exe) benötigten Quelldateien enthalten - und bevorzuge vorerst die (erneute) Verwendung dieser Dateien Dateien (Grund auch unten beschrieben)

Das Schreiben einer Funktion zum Analysieren dieser Dateien und Hinzufügen ihres Inhalts als Quelldateien zu den Zielen war eine überraschend einfache Aufgabe.

Aber - jetzt das Problem: Natürlich möchte ich, dass jedes Ziel in CMakeLists.txt von der jeweiligen Include-Datei abhängt, die die Liste der Quelldateien generiert, sodass Änderungen an der Include-Datei so erkannt werden, als ob es Änderungen an CMakeLists wären. txt selbst, aber ich kann einfach keine Referenzen finden, wie man das erreicht.

N.B .: Ich habe AddFileDependencies gefunden, aber das dient zum Hinzufügen von Abhängigkeiten zu Quelldateien, nicht zur CMakeLists.txt. CMake selbst kann jedoch die Abhängigkeiten zur enthaltenen .cmake-Datei irgendwie herausfinden, so dass ich dachte, es sollte irgendwie möglich sein.

Hintergrund für Neugierige:
Für dieses Projekt (eine ganze Reihe von Bibliotheken, die von einer ganzen Reihe von ausführbaren Zielen verwendet werden, alle als Unterprojekte organisiert) verwendete ich QMake (ohne Qt selbst zu verwenden) zum Einrichten von Makefiles. Auf diese Weise konnte ich Qt Creator verwenden und trotzdem Visual Studio Solution / Project-Dateien erstellen. automagisch. Wir sind auch noch dabei, verschiedene IDEs zu evaluieren, und die Wahl wurde noch nicht getroffen. Der wichtigste Grund für die Verwendung eines Generators wie QMake / CMake bestand jedoch nicht darin, die VS-Dateien für alle diese Teilprojekte manuell einzurichten.

Obwohl ich QMake manchmal überlisten musste, um das zu tun, was ich wollte, liefen die Dinge recht gut - sogar für die VS-Lösung - mit einer Ausnahme: Visual Studio vermasselt Abhängigkeiten von Flex / Bison und anderen Dateien mithilfe benutzerdefinierter Erstellungsregeln. Es kompiliert die Flex- / Bison- / anderen Dateien immer wieder neu und sagt „command line changed“ (Befehlszeile geändert) - was ich aufgegeben habe, um es zu beheben.

Aus diesem Grund denke ich, würde ich stattdessen CMake als Generator versuchen, was bisher sehr vielversprechend aussieht - obwohl es heutzutage etwas lächerlich ist, keine vorkompilierte Header-Unterstützung in CMake zu haben (off topic, I know).

Since Qt Creators CMake-Unterstützung ist bei weitem nicht so gut wie die Unterstützung für QMake-Projekte, stellte ich fest, dass das Parsen der .pri-Dateien, die die Quelldateiliste enthalten, es mir ermöglichen würde, QMake und CMake nebeneinander zu verwenden - zumal die Die restlichen Projekteinstellungen sind weniger kompliziert als bei den meisten Open Source-Projekten.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage