如何将boost.build项目链接到特定的静态库

时间:2012-12-12 15:04:07

标签: c++ boost.build

我将boost.build用于我的项目。当然,我使用boost本身。另外,出于测试目的,我在我的项目中使用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项目文件中的外部静态库链接。


P.S。使用谷歌测试和提升混合气味的cource不好,但无论如何有很多外部库覆盖区域提升不包括。

TIA

1 个答案:

答案 0 :(得分:1)

大!感谢那位指向我http://www.boost.org/boost-build2/doc/html/bbv2/tutorial/prebuilt.html页面的人。 (评论消失了)好像是,我没有仔细阅读本页。使用file属性的目标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 ;

然后,在我的项目文件中的某个地方:

use-project / gtest:./ gtest.lib;

并在项目要求部分提及// gtest。