In meinem Projekt habe ich ungefähr 250 Projekte mit einem Hauptprojekt, das die meisten Projekte verwendet. Es ist wichtig, dass alle Projekte auf dem neuesten Stand sind, wenn das Hauptprojekt ausgeführt wird. Im Grunde sollte Visual Studio für alle 250 Projekte nach Änderungen suchen, wenn MainProject kompiliert (und ausgeführt) wird. Meine CMakeLists.txt-Dateien sehen so aus.Alle Projekte in CMake Visual Studio hängen von einem Projekt ab
Root/CMakeLists.txt
....
add_subdirectory (MainProject)
add_subdirectory (ProjectA)
add_subdirectory (ProjectB)
add_subdirectory (ProjectC)
add_subdirectory (ProjectD)
....
Root/Hauptprojekts/CMakeLists.txt
....
add_executable (MainProject a.cpp b.cpp)
add_dependencies (MainProject ProjectA ProjectB ...)
....
Root/ProjectA/CMakeLists.txt
....
add_executable (ProjectA a.cpp b.cpp)
....
Offensichtlich ist dies ein sehr vereinfachtes Beispiel, aber hoffentlich ist die Idee da. Um Visual Studio nach Abhängigkeiten für alle 250 Projekte suchen zu lassen, muss ich im Grunde alle anderen Projekte im Hauptprojekt als Abhängigkeiten hinzufügen. Jetzt ist das keine elegante Lösung, da add_dependencies in MainProject viele Abhängigkeiten enthält. Es funktioniert, aber gibt es etwas Eleganteres für dieses Problem?
Sind die anderen Projektbibliotheken im 'MainProject' enthalten? Oder möchten Sie, dass alle Bibliotheken, ausführbaren Dateien und benutzerdefinierten Ziele mit main verknüpft sind? – Florian
Letzteres. Ich möchte, dass alle Bibliotheken, ausführbaren Dateien und benutzerdefinierten Ziele überprüft werden (d. H. Mit main als Abhängigkeit verknüpft sind), wenn das MainProject ausgeführt wird. – Doeful
Dann sehen Sie bitte meine Antwort mit möglichen Lösungen [hier] (http://stackoverflow.com/questions/30532448/what-is-the-name-of-cmakes-default-build-target/30575893#30575893). In Ihrem Fall würde das Überschreiben von 'add_executable()', 'add_library()' und 'add_custom_target()' den Trick bedeuten. Im Moment (soweit in CMake Version 3.5.x) gibt es meines Wissens keine globale Zielliste von CMake selbst. – Florian