我有一个复杂的C++应用程序,它是通过bjam (V2)实用程序构建的(以及一些引导环境的some脚本)
在Jamroot文件中,有"include(s)“,其中一些被记录为内置的,但是有很多看起来像”定制“的东西。
我正在尝试添加单元测试,我很难理解bjam实际在做什么的生命周期。官方错误是链接器未能“找到”真正应该可见的库,bc是在编译时使用的,我在Jamroot中确实看到“提到”它们。所以,我不确定是否需要在单元测试目标中显式声明一些东西来推动它,还是什么?我要遵守什么特殊的“命令”吗?有人对此有任何辩解吗?基本上,我的代码所在的dir中有一堆unittest_someclass.cpp文件,我希望它们作为构建的一部分来编译/运行。每个测试都有自己的主要功能来设置和运行测试。
我以为我所要做的就是import test;,所有的需求都将继承自父母Jamroot,但是看起来不是这样吗?
Boost版本为1.53
下面是我在Jamfile中添加的代码示例
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
; 发布于 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还不够熟悉,所以我不知道如何使这个更“优雅”
https://stackoverflow.com/questions/68747763
复制相似问题