Как добавить внешние проекты в CMake, когда репо проекта не является корнем библиотеки, которую я хочу использовать, но на самом деле содержит два каталога, которые являются корневыми каталогами репозиториев, которые я хочу использовать в моем проекте?Как обрабатывать CMake ExternalProject, когда repo (googletest) имеет несколько библиотек?
Я работаю, чтобы создать рамки CMake проект, который использует тест Google и Mock для тестирования, однако при попытке загрузить тестовый репозиторий Google (https://github.com/google/googletest) с ExternalProject_Add
, он жалуется на билде, что он не может найти источник для проекта. Ну, это потому, что Google объединил googletest и googlemock в один проект, за исключением двух проектов.
Некоторые структуры файла РЭПО в:
googletest-master/
├──[...no CMakeFiles.txt exists here...]
├──googletest/
│ ├──src/
│ └──CMakeFiles.txt
└──googlemock/
├──src/
└──CMakeFiles.txt
Когда я следующий ...
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"
)
... он загружает фактической репо в googletest-master/src/gtest
, потому что я предварив репо с «googletest-master», чтобы сохранить его из моего основного исходного кода, и предполагает, что я загружаю проект, который является только источником, и этот источник находится в корневом каталоге.
Так что я хотел бы сделать две вещи:
- Загрузите Репо в googletest-мастер каталог, точно так, как это было бы, если бы я клонировать репозиторий там, или загрузили Zip Off GitHub и экстрагируют Это.
- Сложение и включают в себя как googletest и googlemock в моем проекте CMake
я в конечном итоге делают некоторые настройки некоторыхов из относительных путей, чтобы удовлетворить мои потребности/предпочтение немного больше - это решение raw привело к некоторым ненужно сложным структурам каталогов (googletest-master/src/googletest/src). Но это работает и именно то, что мне нужно. – AberrantWolf