96

Debian は、gTest 用のプリコンパイル済みパッケージを提供しなくなりました。彼らは、フレームワークをプロジェクトのメイクファイルに統合することを提案しています。しかし、私は自分のメイクファイルをきれいに保ちたいと思っています。ライブラリにリンクできるように、以前のバージョン (<1.6.0) のように gTest をセットアップするにはどうすればよいですか?

4

12 に答える 12

153

開始する前に、Google からのこのメモを読んで理解していることを確認してください 。このチュートリアルでは gtest を簡単に使用できますが、厄介なバグが発生する可能性があります。

1. googletest フレームワークを入手する

wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz

または手で取得します。この小さなハウツーは維持しません。リンクが古くなっている場合は、自由に編集してください。

2. Google テストを展開してビルドする

tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make

3. システムにヘッダーとライブラリを「インストール」します。

この手順はディストリビューションによって異なる場合があるため、ヘッダーとライブラリを正しいディレクトリにコピーしてください。これは、 Debian の以前の gtest ライブラリがどこにあるかを確認することで実現しました。しかし、これを行うためのより良い方法があると確信しています。注:make installは危険であり、サポートされていません

sudo cp -a googletest/include/gtest /usr/include
sudo cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/

4. リンカのキャッシュを更新する

...そして、GNUリンカーがライブラリを認識しているかどうかを確認します

sudo ldconfig -v | grep gtest

出力が次のようになっている場合:

libgtest.so.0 -> libgtest.so.0.0.0
libgtest_main.so.0 -> libgtest_main.so.0.0.0

その後、すべてが順調です。

gTestframework を使用する準備が整いました。リンカー フラグとして設定することにより、ライブラリに対してプロジェクトをリンクすることを忘れないでください。-lgtestまた、独自のテスト メインルーチンを作成していない場合は、オプションで明示的な-lgtest_mainフラグを設定することも忘れないでください。

ここからは、Google のドキュメント やフレームワークに関する古いドキュメントにアクセスして、フレームワークのしくみを学習することをお勧めます。ハッピーコーディング!

編集: これはOS Xでも機能します!「OS X で googleTest を適切にセットアップする方法」を参照

于 2012-11-22T13:38:10.923 に答える
37

特にubuntuユーザー向けにこれに答えさせてください。まず、gtest 開発パッケージをインストールします。

sudo apt-get install libgtest-dev

このパッケージはソース ファイルのみをインストールすることに注意してください。必要なライブラリ ファイルを作成するには、自分でコードをコンパイルする必要があります。これらのソース ファイルは、/usr/src/gtest に配置する必要があります。このフォルダーを参照し、cmake を使用してライブラリをコンパイルします。

sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo make install

gtest を使用するプログラムをコンパイルするには、次のようにリンクする必要があります。

-lgtest -lgtest_main -lpthread

これは、Ubuntu 14.04LTS で完全に機能しました。

于 2017-01-31T09:43:34.473 に答える
27

通常の「make install」が削除されており、cmake を使用していないため、これを理解するのにしばらく時間がかかりました。これが私の経験です。職場では、Linux のルート アクセス権がないため、ホーム ディレクトリに Google テスト フレームワークをインストールしました: ~/usr/gtest/.

~/usr/gtest/ にパッケージを共有ライブラリとしてインストールするには、サンプル ビルドも一緒に実行します。

$ mkdir ~/temp
$ cd ~/temp
$ unzip gtest-1.7.0.zip 
$ cd gtest-1.7.0
$ mkdir mybuild
$ cd mybuild
$ cmake -DBUILD_SHARED_LIBS=ON -Dgtest_build_samples=ON -G"Unix Makefiles" ..
$ make
$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib

インストールを検証するには、次の test.c を簡単なテスト例として使用します。

    #include <gtest/gtest.h>
    TEST(MathTest, TwoPlusTwoEqualsFour) {
        EXPECT_EQ(2 + 2, 4);
    }

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

コンパイルする:

    $ export GTEST_HOME=~/usr/gtest
    $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
    $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp 
于 2014-01-23T16:33:02.887 に答える
10

CMake を使用している場合は、ここでExternalProject_Add説明されているように使用できます。

これにより、gtest のソース コードをリポジトリに保持したり、どこにでもインストールしたりする必要がなくなります。ビルド ツリーに自動的にダウンロードされ、ビルドされます。

于 2012-11-22T13:51:12.027 に答える
1

This answer from askubuntu is what worked for me. Seems simpler than other options an less error-prone, since it uses package libgtest-dev to get the sources and builds from there: https://askubuntu.com/questions/145887/why-no-library-files-installed-for-google-test?answertab=votes#tab-top

Please refer to that answer, but just as a shortcut I provide the steps here as well:

sudo apt-get install -y libgtest-dev
sudo apt-get install -y cmake
cd /usr/src/gtest
sudo cmake .
sudo make
sudo mv libg* /usr/lib/

After that, I could build my project which depends on gtest with no issues.

于 2016-12-24T07:09:17.800 に答える