Ich habe die folgende Projektstruktur haben:CMake Projekte mit Submodule, die redudant Abhängigkeiten
root-project/
|-> CMakeLists.txt
|-> src/
|-> foo.cpp
|-> include/
|-> foo.hpp
|-> test/
|-> test_foo.cpp
|-> googletest/
|-> CMakeLists.txt
|-> ...
|-> libs/
|-> my-lib/
|-> CMakeLists.txt
|-> src/
|-> bar.cpp
|-> include/
|-> bar.hpp
|-> test/
|-> test_bar.cpp
|-> googletest/
|-> CMakeLists.txt
|-> ...
Die root-project
baut eine ausführbare Datei namens foo
die my-lib
auf der Bibliothek abhängt. Sowohl die root-project
als auch die my-lib
verwenden googletest
zum Testen, die als git-submodule
enthalten ist.
Ich habe die Tatsache akzeptiert, dass ich googletest
Verzeichnisse unter Verwendung git-submodule
redundant haben werde. Das Problem ist jedoch, dass die einfache Verwendung von add_subdirectory
zum Verbinden des gesamten Projekts mit mehreren gtest
Zielen enden wird.
Meine Frage: Gibt es eine Möglichkeit für root-project
my-lib
zu bauen und nur das Ziel my-lib
und nicht die Prüfziel googletest
sehen? (Das heißt, kann die redundante googletest
sein „versteckt“ während des Build?)
Meine zweite Frage: Da meine Rookie CMake Status, habe ich diese Projekte in einer fehlerhaften Art und Weise organisieren? Gibt es eine bevorzugtere Möglichkeit, die Projekte zu organisieren, die dieses Problem vermeiden? Einige konstruktive CMake Beratung ist willkommen!
Ist Ihnen bekannt, add_subproject? – usr1234567
Nein. Aber ich denke, ich sollte mich damit vertraut machen. – nick
Obwohl es nicht zu existieren scheint: https://cmake.org/?s=add_subproject – nick