【问题标题】:Boost.test and dependency on Boost.thread?Boost.test 和对 Boost.thread 的依赖?
【发布时间】:2016-12-21 03:53:02
【问题描述】:

我正在尝试在 Windows 版本 1.62.0 上构建 Boost.test。我正在构建 --with-test 并且我的输出文件是 libboost_unit_test_framework-vc140-mt-gd-1_62.lib / dll

一切正常,但是当我在项目中添加 unit_test.hpp 标头时,链接器提示找不到 libboost_thread-vc140-mt-gd-1_62.lib。

我很惊讶,我的印象是,当我使用 b2 构建 --with-test 时,Boost.test 的所有依赖项都将被构建,我的意思是我看到它构建了 chrono、timer 和 system,它应该也建立线程吗?

我检查了两次和三次以查看我的项目是否没有引入 thread.hpp 标头 - 它没有。它设置为自动链接库。

我也跑过 BCP

bcp --boost=b:\temp\boost_1_62_0 --list test

在 boost/test 文件夹上,它似乎确实列出了线程文件:

提升\thread.hpp
....
库\线程\构建\has_atomic_flag_l
库\线程\构建\Jamfile.v2
库\线程\src\future.cpp
库\线程\src\pthread\once.cpp
libs\thread\src\pthread\once_atomic
库\线程\src\pthread\thread.cpp
库\线程\src\tss_null.cpp
库\线程\src\win32\thread.cpp
库\线程\src\win32\tss_dll.cpp
库\线程\src\win32\tss_pe.cpp

我有一种感觉,我不完全理解发生了什么。

Boost.unit 是否依赖于 Boost.thread?

如果是这样,为什么它不是由 b2 自动构建的。如果不是,这可能是依赖来自哪里......

谢谢,

安德烈

【问题讨论】:

    标签: windows multithreading testing boost dependencies


    【解决方案1】:

    我的印象是,当我使用 b2 构建 --with-test 时,Boost.test 的所有依赖项都会被构建...

    你有错误的印象; --with-test 只是构建 test 库。您显然还需要构建boost thread

    很抱歉,我不知道是否还有其他依赖项,因为我总是执行 boost 的完整构建,并且它执行 auto-linkingVisual Studio...

    注意:对于 Visual Studio,boost thread 必须使用动态链接构建,因此将 link=shared 添加到 b2 命令中。

    有关更完整的说明,请参阅How do I build boost on Windows?

    【讨论】:

    • 感谢 Kenba,我有这样的印象,因为 --with-test 还构建了 chrono、system 和 timer,正如我看到 bin.v2 文件夹中生成的库一样。由于我没有选择构建那些,只是指定了--with-test,所以我假设这些是已经引入的 Boost.test 依赖项。如果我的理解是正确的,为什么没有引入 Boost.thread在?
    • 对不起@clerech,我不知道--with-test 构建了其他依赖项。由于dynamic linking 问题,它可能不包括thread。但是,这纯粹是我的假设,我只是构建了整个 boost 并且一切正常......
    • 是的,这就是我最终所做的,我希望了解发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多