Jak dodać zewnętrzne projekty w CMake, gdy repozytorium projektu nie jest korzeniem biblioteki, której chcę używać, ale w rzeczywistości zawiera dwa katalogi, z których każdy jest katalogiem głównym repo, które chcę użyć w moim projekcie?Jak obsługiwać CMake ExternalProject, gdy repo (googletest) ma wiele bibliotek?
pracuję do ustanowienia ram projektu CUpewnij test, który wykorzystuje Google i makiety do testowania, jednak gdy próbuję pobrać testową repo Google (https://github.com/google/googletest) z ExternalProject_Add
, narzeka na budowie, że nie może znaleźć źródło dla projektu. To dlatego, że Google połączyło googletest i googlemock w jeden projekt, z wyjątkiem tego, że to teraz dwa projekty.
Niektóre struktury plików w repo:
googletest-master/
├──[...no CMakeFiles.txt exists here...]
├──googletest/
│ ├──src/
│ └──CMakeFiles.txt
└──googlemock/
├──src/
└──CMakeFiles.txt
Kiedy należy wykonać następujące czynności ...
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"
)
... pobiera rzeczywisty repo do googletest-master/src/gtest
bo jestem poprzedzając repo z "googletest-master", aby trzymać go z dala od mojego głównego kodu źródłowego, i zakłada, że pobieram projekt, który jest tylko źródłem i że źródło znajduje się w katalogu głównym.
Więc chciałbym osiągnąć dwie rzeczy:
- pobrać repo do katalogu googletest-master, dokładnie tak, jak byłoby gdybym sklonowany repo tam, lub pobraniu zip off GitHub i ekstrahowano to.
- Budowa i obejmują zarówno googletest i googlemock w moim projekcie CMake
skończyło się jakiejś dostosowanie niektórych ścieżek względnych do moich potrzeb/preferencji nieco więcej - to rozwiązanie surowe prowadziło do niepotrzebnie złożonych struktur katalogów (googletest-master/src/googletest/src). Ale to działa i jest dokładnie tym, czego potrzebowałem. – AberrantWolf