Вопрос или проблема
Я уже некоторое время пытаюсь установить gmock на Ubuntu и поэтому обращаюсь к вам, так как уверен, что это не должно быть сложно, и я просто упускаю что-то важное.
Мне удалось ранее установить gtest, но, к сожалению, я не помню, как именно, но gtest работает на машине, на которую я хочу установить gmock.
Я пробовал установить через:
sudo apt-get install -y googletest
и
sudo apt-get install -y google-mock
Это, похоже, сработало, и я могу компилировать тесты, которые включают <gmock/gmock.h>
, но когда я пытаюсь слинковать, я получаю ошибку:
/usr/bin/ld: cannot find -lgmock
Я пробовал установить, как предложено здесь, но на этапе, который говорит sudo cmake ..
, я получаю предупреждение:
CMake Warning at CMakeLists.txt:54 (project):
VERSION keyword not followed by a value or was followed by a value that
expanded to nothing.
И похоже, что файл make не создается.
Я пробовал скачать исходные коды и следовать инструкциям в Readme.md в папке googletest, но когда я пытаюсь запустить файл cmake в папке, я получаю ошибку:
CMake Error at CMakeLists.txt:129 (set_target_properties):
set_target_properties called with incorrect number of arguments.
На этом этапе я немного запутался. Досадно, что мне удалось установить как googletest
, так и googlemock
на машине под управлением macOS несколько лет назад.
Мой вопрос в основном в том, есть ли у кого-то обновленные инструкции по лучшим практикам установки gtest и gmock на Ubuntu? Поскольку я использую make, а не cmake для своего проекта, я думаю, что мне больше интересно установить gtest и gmock отдельно, а не как часть уже существующего проекта cmake. Я должен добавить, что я довольно новичок как в Ubuntu, так и в установках из исходника.
Ответ или решение
Установка Google Mock (gmock) на Ubuntu может вызывать трудности, особенно если у вас нет достаточного опыта работы с системой сборки CMake. Также стоит отметить, что Google Mock часто устанавливается в связке с Google Test (gtest), и их установка может потребовать некоторых дополнительных шагов. В этом руководстве я предлагаю несколько подходов, чтобы помочь вам успешно установить gmock и gtest на вашу Ubuntu-систему.
1. Установка с помощью apt
Хотя вы упомянули, что уже пробовали установить gmock через apt
, необходимо убедиться, что вы делаете это правильно. Добавьте необходимые репозитории и выполните следующие команды:
sudo apt update
sudo apt install -y libgtest-dev
Однако, команда выше установит только Google Test, а не Google Mock. На данный момент в стандартных репозиториях Ubuntu нет готового пакета для gmock, поэтому вам необходимо будет его собрать из исходников.
2. Установка из исходников
Чтобы установить gmock из исходников, выполните следующие шаги:
-
Клонирование репозитория:
Убедитесь, что у вас установлен
git
. Если нет, установите его:sudo apt install -y git
Затем клонируйте репозиторий:
git clone https://github.com/google/googletest.git cd googletest
-
Создание папки для сборки:
mkdir build cd build
-
Запуск CMake:
Здесь вы можете увидеть, что возникают проблемы с настройкой. Убедитесь, что у вас установлен CMake:
sudo apt install -y cmake
Затем выполните следующую команду:
cmake ..
Если вы получаете предупреждения о
VERSION
, это может быть связано с неверной версией CMake. Рекомендуется использовать последнюю стабильную версию. -
Компиляция:
Если настройка CMake прошла успешно, выполните:
make
-
Установка:
Установите библиотеки:
sudo make install
3. Проверка установки
После завершения установки, проверьте, что gmock и gtest установлены правильно. Используйте следующую команду для проверки наличия файлов:
ls /usr/local/lib | grep gmock
ls /usr/local/lib | grep gtest
4. Компиляция проекта с gmock и gtest
Когда gmock и gtest установлены, вы можете использовать их в своем проекте. Убедитесь, что ваш компилятор знает, где находят библиотеки gmock и gtest при компиляции. Например:
g++ -o my_tests my_tests.cpp -lgtest -lgmock -pthread
5. Устранение ошибок
Если при линковке вы продолжаете получать ошибки, такие как cannot find -lgmock
, убедитесь, что пути библиотек настроены в /etc/ld.so.conf.d/
или выполните:
sudo ldconfig
Это обновит кэш linker и поможет ему найти новые установленные библиотеки.
Заключение
Установка gmock и gtest может быть небольшой головной болью, но следуя этим шагам, вы должны справиться с задачей. Если у вас возникли дополнительные ошибки, попробуйте внимательно изучить их текст и убедитесь, что все зависимости установлены. Если возникают трудности, всегда можно обратиться к документации или сообществу, чтобы получить помощь.