1. ホーム
  2. c++

[解決済み] LinuxでgoogleTestを共有ライブラリとしてセットアップする方法

2023-01-27 02:24:45

質問

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

どのように解決するのですか?

始める前に、以下を読み、理解していることを確認してください。 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.ヘッダーとライブラリをシステムにインストールします。

このステップはディストロによって異なるかもしれませんので、正しいディレクトリにヘッダーとライブラリをコピーすることを確認してください。私はこれを Debians 元 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を正しく設定する方法"