web-dev-qa-db-ja.com

CMakeはUbuntuでGoogleTestに必要なライブラリを見つけることができません

同様の問題 ここ

これは私の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-c ++を使用しようとすると、次の問題が発生します。

/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97(MESSAGE)でのCMakeエラー:GTestが見つかりませんでした(欠落:GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

私はntox86-c ++コンパイラー、googletest、およびcmake-guiを使用してUbuntuにいます。

何ができますか?

18
Erich

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

これでうまくいきました。

28
detrick

@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
9
mrts

少し前にdockerfileを作成しましたが、後でシステムのgoogle testにインストールするための一種のレシピを保持するのに役立ちます。

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

それが役に立てば幸いです:)

0