Debian は、gTest 用のプリコンパイル済みパッケージを提供しなくなりました。彼らは、フレームワークをプロジェクトのメイクファイルに統合することを提案しています。しかし、私は自分のメイクファイルをきれいに保ちたいと思っています。ライブラリにリンクできるように、以前のバージョン (<1.6.0) のように gTest をセットアップするにはどうすればよいですか?
12 に答える
開始する前に、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 を適切にセットアップする方法」を参照
特に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 で完全に機能しました。
通常の「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
CMake を使用している場合は、ここでExternalProject_Add
説明されているように使用できます。
これにより、gtest のソース コードをリポジトリに保持したり、どこにでもインストールしたりする必要がなくなります。ビルド ツリーに自動的にダウンロードされ、ビルドされます。
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.