Wie kann ich externe Projekte in CMake hinzufügen, wenn das Repo des Projekts nicht das Stammverzeichnis der Bibliothek ist, die ich verwenden möchte, sondern tatsächlich zwei Verzeichnisse enthält, die jeweils Stammverzeichnisse von Repos sind, die ich in meinem Projekt verwenden möchte?Wie behandelt man CMake ExternalProject, wenn Repo (googeltest) mehrere Bibliotheken hat?
Ich arbeite einen Rahmen CMake Projekt einrichten, die Google-Test und Mock zum Testen verwendet, aber wenn ich versuche, den Google-Test Repo (https://github.com/google/googletest) mit ExternalProject_Add
herunterladen, klagt sie auf Build, der es nicht finden kann, die Quelle für das Projekt. Das liegt daran, dass Google googletest und googlemock zu einem einzigen Projekt zusammengeführt hat, mit Ausnahme von zwei Projekten.
Einige der Dateistruktur des Repo:
googletest-master/
├──[...no CMakeFiles.txt exists here...]
├──googletest/
│ ├──src/
│ └──CMakeFiles.txt
└──googlemock/
├──src/
└──CMakeFiles.txt
Wenn ich die folgende ...
ExternalProject_Add(
gtest
GIT_REPOSITORY https://github.com/google/googletest.git
TIMEOUT 10
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD ON
PREFIX "googletest-master"
)
... es lädt die tatsächlichen Repo googletest-master/src/gtest
, weil ich die Repo bin prefixing mit "googletest-master", um es von meinem Hauptquellcode fernzuhalten, und es setzt voraus, dass ich ein Projekt herunterlade, das nur eine Quelle ist und diese Quelle im Stammverzeichnis ist.
So würde Ich mag zwei Dinge erreichen:
- Laden Sie die repo in das googletest-Master-Verzeichnis, genau so, wie es wäre, wenn ich den Repo dort geklont oder heruntergeladen die Zip-off GitHub und extrahierte es.
- gebaut und umfassen sowohl googletest und googlemock in meinem CMake Projekt
landete ich auf meine Bedürfnisse/Vorlieben anpassen ein bisschen mehr - diese rohe Lösung führte zu unnötig komplexen Verzeichnisstrukturen (googletest-master/src/googletest/src). Aber das funktioniert und ist genau das, was ich brauchte. – AberrantWolf