【问题标题】:How to link boost.build project to particular static library如何将 boost.build 项目链接到特定的静态库
【发布时间】:2012-12-12 15:04:07
【问题描述】:

我将 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 项目文件中是否有更自然的方式将目标与外部静态库链接。


附:当然,使用 google-test 和 boost mix 的味道并不好,但无论如何,有很多外部库涵盖了 boost 没有涵盖的领域。

TIA

【问题讨论】:

  • 至少可以为 google-test 制作 Jamroot 并使用 use-project 语句将我的项目链接到这个新项目。并使用提升链接功能。但是如何链接外部静态库的问题仍然悬而未决

标签: c++ boost-build


【解决方案1】:

太棒了!感谢指点我http://www.boost.org/boost-build2/doc/html/bbv2/tutorial/prebuilt.html页面的人。 (评论消失了)看来,我确实没有仔细阅读此页面。具有文件属性的目标库执行我搜索的操作。谢谢!


至于使用 google test 和 boost build,我是这样做的:我为 google-test 制作了 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多