2012-12-12 83 views
3

我對我的項目使用boost.build。當然,我使用增強本身。另外,爲了測試目的,我在項目中使用了google-test庫。我必須將我的項目與google-test的靜態庫鏈接起來。我已經找到了解決辦法做就是MinGW的(對於Linux的海灣合作委員會的工作太)如何將boost.build項目鏈接到特定的靜態庫

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項目文件的外部靜態庫鏈接目標更自然的方式。


P.S.使用谷歌測試和增強混合氣味不太好,但無論如何,有很多外部庫覆蓋的地區提升不包括。

TIA

+0

至少可以讓Jamroot進行谷歌測試,並使用use-project語句將我的項目鏈接到這個新項目。並使用增強鏈接功能。但是如何連接外部靜態庫的問題仍然是開放的 –

回答

1

太棒了!感謝誰指出我http://www.boost.org/boost-build2/doc/html/bbv2/tutorial/prebuilt.html頁面的人。 (評論消失)似乎是,我沒有仔細閱讀這個頁面。目標lib與文件屬性做我搜索的東西。謝謝!


至於使用谷歌測試和提升生成我做了這樣的方式:我做了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。

相關問題