如何在 mingw64 上使用 boost.test 构建测试?

Posted

技术标签:

【中文标题】如何在 mingw64 上使用 boost.test 构建测试?【英文标题】:How to build tests using boost.test on mingw64? 【发布时间】:2021-07-29 15:36:07 【问题描述】:

我正在尝试使用 windows 10 上的 boost 库编写一些代码。为了构建应用程序,我选择了与 MSYS2 一起安装的 mingw64。

下载并安装 boost 库(1.76) 后,我尝试了这个示例代码 (https://www.boost.org/doc/libs/1_76_0/more/getting_started/windows.html#build-a-simple-program-using-boost),我使用这个命令构建得很好:

g++ .\example.cpp -o test.exe -IC:\Users\Benelli\BoostLib\boost_1_76_0\boost_1_76_0

此示例适用于我的系统,因此我假设 boost 库已正确安装,尽管我没有构建它们,但我知道 boost.test 库可以用作“仅标题”。

我按照本教程编写了一个简单的代码:https://www.boost.org/doc/libs/1_76_0/more/getting_started/windows.html#build-a-simple-program-using-boost。

#define BOOST_TEST_MODULE const_string test
#include <boost/test/unit_test.hpp>

这段代码无法编译,我真的不明白为什么。 boost.test 库真的是“header_only”吗? 我用来构建它的命令是:

g++ .\boost_test_example.cpp -o boost_test.exe -IC:\Users\Benelli\BoostLib\boost_1_76_0\boost_1_76_0

这给出了这个错误信息:

【问题讨论】:

【参考方案1】:

仅用于标题:

我认为您需要根据 https://www.boost.org/doc/libs/1_69_0/libs/test/doc/html/boost_test/adv_scenarios/single_header_customizations/multiple_translation_units.html 的 boost 文档使用 boost/test/included/unit_test.hpp

我遇到了类似的 winMain 错误,必须将 BOOST_TEST_DYN_LINK 定义到代码顶部(当我链接库时)。

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE const_string test
#include <boost/test/unit_test.hpp>

当不将标头仅用于未定义的引用时,链接与 boost 测试库,例如 -LC:/msys64/mingw64/lib -lboost_unit_test_framework-mt

【讨论】:

现在正在编译,非常感谢。尽管如此,鉴于输出是:测试设置错误:测试树为空,我似乎遇到了一些问题。而不是“*** 未检测到错误”。也许你也有这些行为的经验?

以上是关于如何在 mingw64 上使用 boost.test 构建测试?的主要内容,如果未能解决你的问题,请参考以下文章

在 VS 上开如何发使用 Mingw64 的 DLL

在 VS 上开如何发使用 Mingw64 的 DLL

在 VS 上开如何发使用 Mingw64 的 DLL

如何在 Windows 7 64 位上设置 MinGw? [关闭]

_BitScanForward64 在 Windows 上使用 MinGW

如何在mingw-w64 gcc 7.1中无需警告地打印size_t?