Почему я получаю ошибку CMake в gmock CMakeLists.txt при компиляции зависимости gtest?

Я использую GCC 4.8.4, GNU Make 3.81 и CMake 2.8.12.2 на своей машине с Ubuntu 14.04, пытаясь скомпилировать небольшой проект, который зависит от gtest и gmock. Вы можете просмотреть полный исходный код этого проекта вместе с моими файлами CMake здесь< /а>. Я выполняю обычные шаги mkdir build && cd build && cmake .. && make, но получаю эту ошибку после загрузки, извлечения и настройки зависимости gmock 1.7.0:

CMake Error at CMakeLists.txt:51 (add_subdirectory):
  add_subdirectory given source "../gtest" which is not an existing
  directory.

CMake Error at CMakeLists.txt:56 (config_compiler_and_linker):
  Unknown CMake command "config_compiler_and_linker".

Чтобы было ясно, это ошибки, обнаруженные при выполнении команд add_subdirectory и config_compiler_and_linker в gmock CMakeLists.txt при попытке сослаться на зависимость gtest. Я уже поднимал эту проблему в аккаунте Google github. чтобы узнать, могут ли мне помочь какие-либо участники.

Вот еще один пример того же сбоя сборки, не знаю, как владельцы этого проекта решили свою проблему: https://travis-ci.org/open-eid/esteid-pkcs11/builds/39580725


person nmurthy    schedule 26.03.2017    source источник
comment
GMock работает с gtest (это явно указано в README). У вас должны быть исходники gtest, загруженные в каталог gtest в исходном каталоге gmock или в верхнем каталоге. Ошибка означает, что вы не разместили gtest должным образом.   -  person Tsyvarev    schedule 26.03.2017
comment
У меня есть gtest в моих зависимостях (см. github. com/natemurthy/misc/blob/master/cpp-stuff/containers/). Как правильно его разместить?   -  person nmurthy    schedule 27.03.2017
comment
Согласно исходному коду, если у вас есть googlemock/CMakeLists.txt , у вас должно быть либо gtest/CMakeLists.txt, либо googlemock/gtest/CMakeLists.txt.   -  person Tsyvarev    schedule 27.03.2017
comment
Это именно то, что у меня есть в моей папке build/test после запуска cmake: build/test/gtest и build/test/gmock   -  person nmurthy    schedule 28.03.2017
comment
Согласно вашему CMakeLists.txt, у вас есть build/test/*gtest*/src/*gtest*/CMakeLists.txt и build/test/*gmock*/src/*gmock*/CMakeLists.txt, что отличается от ожиданий gmock. Обратите внимание, что для ExternalProject_Add() PREFIX< /i> не совпадает с исходным каталогом. Вы можете использовать один и тот же PREFIX как для gtest, так и для gmock. Также не забывайте о зависимости между этими целями.   -  person Tsyvarev    schedule 28.03.2017
comment
Что вы предлагаете заменить PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gtest и PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gmock в моих вызовах ExternalProject_Add(), чтобы у меня была ожидаемая структура каталогов сборки?   -  person nmurthy    schedule 28.03.2017
comment
Например. вы можете использовать PREFIX ${CMAKE_CURRENT_BINARY_DIR}/3dparty как для gmock, так и для gtest.   -  person Tsyvarev    schedule 28.03.2017
comment
Я попробовал именно так, как вы предложили, но теперь я получаю эту ошибку pastebin.com/Ukk987Bz   -  person nmurthy    schedule 31.03.2017
comment
Вы можете проверить содержимое каталогов PREFIX для gmock и gtest и настроить параметры PREFIX для достижения правильного макета. Я описал этот макет в моем втором комментарии.   -  person Tsyvarev    schedule 31.03.2017


Ответы (1)


Этот проект был включен в [GoogleTest (http://github.com/google/googletest) проект. Туда перенесены все открытые проблемы с googlemock.

1) Скачать googleTest, 2) разархивировать googletest, 3) Войти в папку googleMock, 4) cd build-aux, 5) cmake.., готово

person g.kontogiannis    schedule 02.02.2018