我将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
答案 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。