Debianは、gTest用のプリコンパイル済みパッケージを提供しなくなりました。フレームワークをプロジェクトのメイクファイルに統合することをお勧めします。しかし、メイクファイルをきれいに保ちたいです。ライブラリに対してリンクできるように、以前のバージョン(<1.6.0)のようにgTestを設定するにはどうすればよいですか?
始める前に、必ず読んで理解してください Googleからのこのメモ !このチュートリアルはgtestの使用を簡単にしますが、 厄介なバグ を導入する可能性があります。
wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz
または hand で取得します。私はこの小さなハウツーを維持しませんので、もしあなたがそれにつまずいてリンクが古くなったら、気軽に編集してください。
tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make
この手順は、ディストリビューションごとに異なる場合があるため、ヘッダーとライブラリを正しいディレクトリにコピーしてください。 Debians以前のgtest libs の場所を確認することでこれを達成しました。しかし、これを行うより良い方法があると確信しています。注:make install
は危険であり、サポートされていません
$ Sudo cp -a include/gtest /usr/include
$ Sudo cp -a libgtest_main.so libgtest.so /usr/lib/
... 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にアクセスして、フレームワークについて ドキュメント にアクセスして、その仕組みを学びたいと思うかもしれません。ハッピーコーディング!
Edit:これは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 cmake CMakeLists.txt
Sudo make
# copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder
Sudo cp *.a /usr/lib
ここで、gtestを使用するプログラムをコンパイルするには、次とリンクする必要があります。
-lgtest -lgtest_main
これは、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
を here のように使用できます。
これにより、gtestソースコードをリポジトリに保持したり、どこにでもインストールしたりする必要がなくなります。ダウンロードされ、ビルドツリーに自動的にビルドされます。
私も同様にこの状況に圧倒され、このために独自のUbuntuソースパッケージを作成することになりました。これらのソースパッケージを使用すると、バイナリパッケージを簡単に作成できます。これらは、この投稿時点での最新のgtestおよびgmockソースに基づいています。
バイナリパッケージをビルドするには、次の操作を行います。
tar -xzvf gtest-1.7.0.tar.gz
cd gtest-1.7.0
dpkg-source -x gtest_1.7.0-1.dsc
cd gtest-1.7.0
dpkg-buildpackage
いくつかの前提条件のパッケージが必要な場合がありますが、その場合はapt-getをインストールするだけです。それとは別に、ビルドされた.debバイナリパッケージは親ディレクトリに置かれる必要があります。
GMockの場合、プロセスは同じです。
サイドノートとして、ソースパッケージに固有ではありませんが、gtestをユニットテストにリンクするときは、gtestが最初に含まれていることを確認してください( https://bbs.archlinux.org/viewtopic.php?id=156639 )これはよくある落とし穴のようです。
昨日(2016-06-22)のように他の誰かが同じ状況に陥り、既に投稿されたアプローチで成功しない場合に備えて-Lubuntu 14.04
で、次の一連のコマンドを使用して機能しました:
git clone https://github.com/google/googletest
cd googletest
cmake -DBUILD_SHARED_LIBS=ON .
make
cd googlemock
Sudo cp ./libgmock_main.so ./gtest/libgtest.so gtest/libgtest_main.so ./libgmock.so /usr/lib/
Sudo ldconfig
Askubuntuからのこの答えは、私にとってうまくいったことです。パッケージlibgtest-dev
を使用してそこからソースとビルドを取得するため、他のオプションよりもシンプルでエラーが発生しにくいようです。 https://askubuntu.com/questions/145887/why-no-library -files-installed-for-google-test?answertab = votes#tab-top
その答えを参照してください。ただし、ショートカットとして、ここでも手順を示します。
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/
その後、gtest
に依存するプロジェクトを問題なくビルドできました。
これにより、gtestとgmock 1.7.0の両方がビルドおよびインストールされます。
mkdir /tmp/googleTestMock
tar -xvf googletest-release-1.7.0.tar.gz -C /tmp/googleTestMock
tar -xvf googlemock-release-1.7.0.tar.gz -C /tmp/googleTestMock
cd /tmp/googleTestMock
mv googletest-release-1.7.0 gtest
cd googlemock-release-1.7.0
cmake -DBUILD_SHARED_LIBS=ON .
make -j$(nproc)
Sudo cp -a include/gmock /usr/include
Sudo cp -a libgmock.so libgmock_main.so /usr/lib/
Sudo cp -a ../gtest/include/gtest /usr/include
Sudo cp -a gtest/libgtest.so gtest/libgtest_main.so /usr/lib/
Sudo ldconfig
これにより、Ubuntu/DebianベースのシステムにGoogleテストおよびモックライブラリがインストールされます。
Sudo apt-get install google-mock
DebianベースのイメージでGoogleクラウドでテスト済み。
次の方法では、/usr/lib
ディレクトリを手動で変更することを避けながら、CMakeLists.txt
ファイルの変更を最小限に抑える必要があります。また、パッケージマネージャーでlibgtest-dev
を完全にアンインストールできます。
これは、libgtest-dev
パッケージを取得するときに
Sudo apt install libgtest-dev
ソースは/usr/src/googletest
の場所に保存されます
CMakeLists.txt
をそのディレクトリにポイントするだけで、必要な依存関係を見つけることができます
FindGTest
をadd_subdirectory(/usr/src/googletest gtest)
に置き換えるだけです
最後に、このようになります
add_subdirectory(/usr/src/googletest gtest)
target_link_libraries(your_executable gtest)
@ ManuelSchneid3rの回答に基づく1.8.1の場合:
wget github.com/google/googletar xf release-1.8.1.tar.gz
tar xf release-1.8.1.tar.gz
cd googletest-release-1.8.1/
cmake -DBUILD_SHARED_LIBS=ON .
make
それからmake install
を実行しました。これは1.8.1で動作しているように見えましたが、@ ManuelSchneid3rに続いて次のことを意味します。
Sudo cp -a googletest/include/gtest /usr/include
Sudo cp -a googlemock/include/gmock /usr/include
Sudo cp `find .|grep .so$` /usr/lib/