googletest をインストールするにはどうすればいいですか?

googletest をインストールするにはどうすればいいですか?

検索したグーグルテストmuon を使用していますが、Ubuntu にはそのためのパッケージがないようです。ソースを使用してインストールする必要がありますか?

答え1

新情報:

libgtest0 はもう存在しないことに注意してください。2013 年頃 (変更の日付はわかりません) の次の質問を参照してください。

Google テスト用のライブラリ ファイルがインストールされていないのはなぜですか?


2012 年以前の古い回答:

Ubuntuリポジトリにあります

sudo apt-get install libgtest0 libgtest-dev

参照gtest-config を実行する

答え2

最小限の実行可能な例

Debian/Ubuntu は、次のように述べられているように、ビルド済みのパッケージを拒否します。Google テスト用のライブラリ ファイルがインストールされていないのはなぜですか?自分でクローンしてビルドします (または実際のプロジェクトではサブモジュールとして追加します)。

git clone https://github.com/google/googletest
cd googletest
git checkout b1fbd33c06cdb0024c67733c6fdec2009d17b384
mkdir build
cd build
cmake ..
make -j`nproc`
cd ../..

次に、テストファイルでそれを使用しますmain.cpp

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  -lpthread \
;

メイン

#include <gtest/gtest.h>

int myfunc(int n) {
    return n + 1;
}

TEST(asdfTest, HandlesPositiveInput) {
    EXPECT_EQ(myfunc(1), 2);
    EXPECT_EQ(myfunc(2), 3);
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

期待される出力を得るには:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from asdfTest
[ RUN      ] asdfTest.HandlesPositiveInput
[       OK ] asdfTest.HandlesPositiveInput (0 ms)
[----------] 1 test from asdfTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

あるいは、ファイルmainから関数を削除してmain.cpp、代わりに提供されているデフォルトのものを使用するlibgtest_main.a:

g++ \
  -Wall \
  -Werror \
  -Wextra \
  -pedantic \
  -O0 \
  -I googletest/googletest/include \
  -std=c++11 \
  -o main.out \
  main.cpp \
  googletest/build/lib/libgtest.a \
  googletest/build/lib/libgtest_main.a \
  -lpthread \
;

Ubuntu 20.04 でテスト済み。

関連情報