我正在使用mingw-4.8.1在我的窗口上构建boost并且有一些失败的目标。我的问题是,我不知道哪些具体目标失败了,哪些目标被忽略了。
有没有办法在构建完成后列出失败/跳过的目标?
控制台输出:
...failed updating 20 targets...
...skipped 28 targets...
...updated 5789 targets...
下载解压缩提升后使用的命令:
bootstrap
一旦构建了b2.exe。我在cmd中执行以下命令
b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
系统:Windows 7(intel i5 vPro)
编译器:gcc(mingw 4.8.1)
提升:提升1.61.0
答案 0 :(得分:7)
我遇到了同样的问题。经过一些研究,我发现这是查看它失败的最佳方式。
...failed updating 6 targets...
...skipped 6 targets...
...updated 1092 targets...
我跑./b2 -q
在我的情况下,这将停止您的第一次错误:
gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.8.3/release/threading-multi/bzip2.o
libs/iostreams/src/bzip2.cpp:20:56: fatal error: bzlib.h: No such file or directory
#include "bzlib.h" // Julian Seward's "bzip.h" header.
^
compilation terminated.
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -fPIC -m64 -DBOOST_ALL_NO_LIB=1 -DBOOST_IOSTREAMS_DYN_LINK=1 -DBOOST_IOSTREAMS_USE_DEPRECATED -DNDEBUG -I"." -c -o "bin.v2/libs/iostreams/build/gcc-4.8.3/release/threading-multi/bzip2.o" "libs/iostreams/src/bzip2.cpp"
...failed gcc.compile.c++ bin.v2/libs/iostreams/build/gcc-4.8.3/release/threading-multi/bzip2.o...
...failed updating 1 target...
然后您可以安装缺少的依赖项,并查看您的第二个缺失的依赖项。 要查看每个错误,您需要在之后安装依赖项 另一个。如果您决定全力推进构建,这很好。 就我而言,我编译了bzip库http://www.bzip.org/downloads.html。 这个库很难制作。 Boost需要Linux上的动态版本。
make -f Makefile-libbz2_so
您必须手动将libbz2.so.1.0.6文件复制到/ usr / local / lib 制作两个符号链接
libbz2.so.1 -> libbz2.so.1.0.6
libbz2.so -> libbz2.so.1
在此之后,我可以提升并看到:
The Boost C++ Libraries were successfully built!
或尝试./b2 -s NO_BZIP2 = 1跳过
答案 1 :(得分:0)
因此,进行了一些研究,结果如下:
可以使用获取构建配置和其他构建输出
b2 [options]
b2 --help
显示了可以使用的选项。我使用以下方法准确诊断哪些目标失败或被跳过。
方法1
正如@JanHenke在评论中所建议的那样,我运行了相同的命令
b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
(如上所述) 结果:已跳过所有已构建的遗留物,仅显示失败的遗留物 问题:如果有许多目标失败,那么这只会淹没控制台,很难找到正在发生的事情。
方法2
运行命令(请参阅1)并使用鼠标右键单击命令提示符中的所有选项,然后单击增益将其复制并粘贴到文本编辑器中以便可搜索。
结果:可以通过搜索失败的或错误关键字来绘制可用的数据分析
问题:仍然不是最佳方式,因为并非所有信息都可在当前cmd窗口中使用。
方法3
没有完成,对我来说2.工作,但肯定会工作
创建一个batchfile
,在其中,编写命令并在cmd窗口上打印的所有内容都使用>
或>>
运算符记录在文本文件中。
结果:将是最好的方式(我现在知道)知道哪些确切的目标失败并且可以采取适当的诊断措施。
PS :我发现尝试使用MinGW构建序列化库时存在错误。在我面临的错误下方以及提升论坛的链接,该论坛谈论同样的错误。
gcc.compile.c++ build\boost\bin.v2\libs\serialization\build\gcc-mingw-4.8.1\debug\xml_woarchive.o
In file included from ./boost/archive/detail/utf8_codecvt_facet.hpp:23:0,
from ./boost/archive/impl/xml_woarchive_impl.ipp:34,
from libs\serialization\src\xml_woarchive.cpp:28:
./boost/detail/utf8_codecvt_facet.hpp:116:30: error:
function 'boost::archive::detail::utf8_codecvt_facet::utf8_codecvt_facet(std::size_t)'
definition is marked dllimport
更多信息Reference1和Reference2 可悲的是还没有找到解决方案。此外,这不是这个问题的范围。