首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost bjam导入语句

Boost bjam导入语句
EN

Stack Overflow用户
提问于 2021-08-11 19:17:29
回答 1查看 155关注 0票数 0

我有一个复杂的C++应用程序,它是通过bjam (V2)实用程序构建的(以及一些引导环境的some脚本)

在Jamroot文件中,有"include(s)“,其中一些被记录为内置的,但是有很多看起来像”定制“的东西。

我正在尝试添加单元测试,我很难理解bjam实际在做什么的生命周期。官方错误是链接器未能“找到”真正应该可见的库,bc是在编译时使用的,我在Jamroot中确实看到“提到”它们。所以,我不确定是否需要在单元测试目标中显式声明一些东西来推动它,还是什么?我要遵守什么特殊的“命令”吗?有人对此有任何辩解吗?基本上,我的代码所在的dir中有一堆unittest_someclass.cpp文件,我希望它们作为构建的一部分来编译/运行。每个测试都有自己的主要功能来设置和运行测试。

我以为我所要做的就是import test;,所有的需求都将继承自父母Jamroot,但是看起来不是这样吗?

Boost版本为1.53

下面是我在Jamfile中添加的代码示例

代码语言:javascript
复制
 custom_lib_target my_project_lib
     :
   /boost//headers
   /some_other_stuff//etc
   ...
     :
    <warn_extra>off
    ...etc...
     ;

   #my unit_test target 
 exe boost_tester
   :
  my_project_lib
   ;

 unit-test test_all
 : [ glob unittest*.cpp ] boost_tester
 ;     
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-17 16:22:19

因此,问题不在于boost测试框架(尽管这可以更好地记录下来),问题在于链接器无法找到各种库的调试变体来链接。(阅读警告会有所帮助。)因此,虽然构建在从根运行时为项目工作,但对于子项目却失败了,例如,当尝试单独运行单元测试时。我能够通过硬编码(不理想但有效)修复它,调试变体的路径如下:

lib my_lib : : <file>/path/to/my_lib-d.so <variant>debug

然后在测试构建中使用它,如下所示

unit-test my_test : [ glob unittest*.cpp ] my_lib : ;

在这一点上,我对Boost.Build V2还不够熟悉,所以我不知道如何使这个更“优雅”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68747763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档