使用できる可能性のある新しい単体テストフレームワークとして、概念実証用のgoogletest単体テストを構築しようとしています。googletestでは、単体テストを作成する方法が2つあります。メインを使用する方法とメインを使用しない方法です。mainを定義しない場合は、main()関数を含むgtest_mainライブラリにリンクして、時間を節約できます。私の環境では、Jamを使用してバイナリを構築しています。コード内でmain()を使用してlibgtestライブラリを使用してコンパイルするバイナリを取得しましたが、mainを使用せずにJamでビルドする方法を探しています。
基本ケース(main()関数を使用):
私はこれでバイナリを構築することができます:
Main MyUnitTestBinary : MyClass.cpp ;
LinkLibraries MyUnitTestBinary : libgtest ;
Library libgtest : $(GTEST_DIR)/src/gtest-all.cc ;
壊れたケース(main()関数なし):
これでバイナリを作成することはできません。オブジェクトをリンクしようとすると、多くのエラーが表示されます。
Main sample1_unittest : sample1.cc sample1_unittest.cc ;
LinkLibraries sample1_unittest : gtest_main ;
Library gtest_main : $(GTEST_DIR)/src/gtest_main.cc ;
何とかへの未定義の参照に関連する多くのリンカーエラーが発生します。未定義の参照は、私のコードの一部ではないtesting::internal名前空間から来ているようです。
これをどのように攻撃できるか、または問題に関するより多くの手がかりを探す方法について何か考えはありますか?