2012-12-12 67 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。

相关问题