Ich versuche, den Inklusion Weg einer Reihe von addsubdirectories abzufragen():Cmake: Lesen Sie Variablen aus einem anderen (verarbeitet) Verzeichnis
-projectA
-projectB
-projectC
In dieser Konfiguration wird projectA
Hinzufügen ProjectB
als ein Unterverzeichnis der wiederum fügt ProjectC
als Unterverzeichnis hinzu. Ich möchte projectC
über die Hierarchie wissen lassen. Ich kann dies durch rekursive Aufrufe erreichen
get_directory_property(parent DIRECTORY ${cur_dir} PARENT_DIRECTORY)
, die nichts zurück, wenn es projectA
erreicht. Das macht es fast. Es wäre aber nett, wenn ich die ${PROJECT_NAME}
von diesen Verzeichnissen lesen und A-B-C
anstelle von projectA-projectB-projectC
zurückgeben könnte.
Meine Frage ist also: Gibt es eine Möglichkeit, die Variablen aus einem Verzeichnis zu lesen, das bereits geparst ist?
Beachten Sie, dass in diesem Fall projectC
Variablen von seinem übergeordneten erben, aber die Standard-Cache-Variablen in den untergeordneten Projekten ersetzt werden, weshalb ich sie nicht verwenden kann.
Könnte [ 'LISTFILE_STACK'] (https://cmake.org/cmake/help/v3.3/prop_dir /LISTFILE_STACK.html) kann hier etwas nützen? Oder Sie könnten Ihren eigenen 'my_add_subdirectory()' erstellen, der den Stack in benutzerdefinierten Verzeichniseigenschaften von 'PROJECT_NAME' erstellt. Und habe ich richtig verstanden, dass alle (Unter-) Ordner einen 'project()' Befehl haben? – Florian
ja alle haben Projekt(). Ich komme jedoch zu der Schlussfolgerung, dass auf dieselbe Weise installierte Projekte Konfigurationsdateien haben können, ich kann eine mit 'configure_file' erzeugen lassen und sie im Quellordner als Kopf- oder Projektdatei speichern. damit ich das Verzeichnis gefunden habe, würde ich einfach seine Projektdatei hinzufügen. Ich denke, es ist viel sauberer als alles andere, was ich tun könnte. – ShS
Ok, aber wie dies eingerichtet wird ist höchstwahrscheinlich eine andere Frage (siehe zB meine [hier] (http://stackoverflow.com/questions/31512485/cmake-how-to-setup-source-library-and-cmakelists-txt) Abhängigkeiten)). Wenn Sie die Hauptfrage, die Sie hier gestellt haben, beantworten, können Sie die Eigenschaft "VARIABLES" (https://cmake.org/cmake/help/v3.3/prop_dir/VARIABLES.html) für ein bestimmtes bereits analysiertes Verzeichnis lesen . – Florian