我试图在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。
我很惊讶,我的印象是,当我构建--with-test,使用b2时,Boost.test的所有依赖项都将被构建,我的意思是我看到它构建了计时器,计时器和系统,它还应该构建线程吗?
我进行了双重和三重检查以查看我的项目是否未引入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 \并行线程\ once.cpp
库\线程的\ src \并行线程\ once_atomic
库\线程的\ src \并行线程\ 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自动构建。如果不是,那么依赖性将来自......
谢谢,
安杰伊
答案 0 :(得分:1)
我的印象是,当我使用b2构建--with-test时,将构建Boost.test的所有依赖项......
你的印象不对; --with-test
只构建test
库。你显然也需要构建boost thread
。
我很遗憾地说我不知道是否还有其他依赖项,因为我总是执行boost
的完整版本,并使用auto-linking
执行Visual Studio
。 ..
注意:对于必须使用动态链接构建Visual Studio boost thread
,因此请将link=shared
添加到b2
命令。
有关更完整的说明,请参阅How do I build boost on Windows?。