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

Надеюсь, это поможет:)