CMake не может найти необходимую библиотеку GoogleTest в Ubuntu
Аналогичный вопрос здесь.
Это мой CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Add test cpp file
add_executable(foo foo.cpp)
# Link test executable against gtest & gtest_main
target_link_libraries(foo ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
И мой foo.cpp:
#include <gtest/gtest.h>
TEST(sample_test_case, sample_test)
{
EXPECT_EQ(1, 1);
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Теперь все отлично работает при использовании компилятора g++. Однако при попытке использовать компилятор QNX, ntox86-С++, я столкнулся с этой проблемой:
Ошибка CMake в /usr/share/cmake -2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE): Не удалось найти GTest (отсутствует: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
Я на Ubuntu, используя компилятор ntox86-С++, googletest и cmake-gui.
Что дает?
Ответы
Ответ 1
Тест Google, вероятно, не был установлен должным образом (libgtest-dev
может устанавливать только исходные файлы, которые необходимо было скомпилировать). У меня была такая же проблема, и я следовал инструкциям http://www.eriksmistad.no/getting-started-with-google-test-on-ubuntu/
sudo apt-get install libgtest-dev
sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
#copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
sudo cp *.a /usr/lib
Это сработало для меня.
Ответ 2
Как объясняет @detrick, пакет Ubuntu libgtest-dev
устанавливает только исходные коды, поэтому вам нужно собирать и устанавливать библиотеки самостоятельно.
Тем не менее, существует более простой способ сборки и установки, начиная с Ubuntu 18.04, чем ручные команды в других ответах:
sudo apt install libgtest-dev build-essential cmake
cd /usr/src/googletest
sudo cmake .
sudo cmake --build . --target install
Ответ 3
Некоторое время назад я создал файл докеров и помог мне сохранить рецепт для установки позже в тесте google в моих системах:
apt-get install -y git g++ make cmake
git clone https://github.com/google/googletest.git
cd googletest
mkdir gbuild && cd gbuild && cmake .. && make
cp -r googletest/include/gtest /usr/local/include
cp gbuild/googlemock/gtest/lib*.a /usr/local/lib
cp gbuild/googlemock/lib*.a /usr/local/lib
Надеюсь, это поможет:)