3

プロジェクトにboost.buildを使用しています。もちろん、私はブースト自体を使用します。また、テストの目的で、プロジェクトでgoogle-testライブラリを使用します。プロジェクトをgoogle-testの静的ライブラリにリンクする必要があります。MinGWでそれを行うための回避策を見つけました(Linuxのgccも機能します)

exe foo : $(IMPORTANT_PART) $(TEST_UTILITY_PART) : <toolset>gcc <linkflags>"../../libs/gtest-1.6.0/libs/gtest_main.a" <linkflags>-static <linkflags>-lpthread ;

見た目は醜いですが、機能します。msvcのルールははるかに醜いように見えます

exe foo : $(IMPORTANT_PART) $(TEST_UTILITY_PART) : <toolset>msvc <linkflags>/LIBPATH:../../libs/gtest-1.6.0/libs <linkflags>/DEFAULTLIB:gtest_main-mdd.lib
<linkflags>/DEFAULTLIB:gtestd-md.lib
;

boost.buildプロジェクトファイルでターゲットを外部静的ライブラリにリンクするより自然な方法はありますか?


PSグーグルテストとブーストミックスを使用したコースの匂いは良くありませんが、とにかくブーストがカバーしていない領域をカバーする外部ライブラリがたくさんあります。

TIA

4

1 に答える 1

1

すごい!http://www.boost.org/boost-build2/doc/html/bbv2/tutorial/prebuilt.htmlページを教えてくれた人に感謝します。(コメントが消えました)どうやら、このページをよく読んでいませんでした。そして、 file プロパティを持つターゲット lib は、私が検索したことを行います。ありがとう!


Google テストとブースト ビルドの使用に関しては、次のようにしました。Google テスト用の Jamfile を作成しました。それは非常に簡単です:

gtest.lib/Jamfile
    project gtest_main 
         : requirements <include>../../../libs/gtest-1.6.0/include
                        <include>../../../libs/gtest-1.6.0/
         : source-location ../../../libs/gtest-1.6.0 
         : build-dir ../../../libs/gtest-1.6.0/bin.b2 ; 
    
    lib gtest_main : src/gtest_main.cc src/gtest-all.cc : <link>static ;

次に、私のプロジェクトファイルのどこかに:

使用プロジェクト /gtest : ./gtest.lib ;

プロジェクトの要件セクションで //gtest に言及します。

于 2012-12-17T21:01:14.913 に答える