如何在构建提升后列出失败的目标?
How to list failed targets after building boost?
我正在使用 mingw-4.8.1 在我的 windows 上构建提升,但有几个目标失败了。我的问题是,我不知道哪些特定目标失败了,哪些被跳过了。
Is there a way to list the failed/skipped targets after the build is completed?
这里是控制台输出:
...failed updating 20 targets...
...skipped 28 targets...
...updated 5789 targets...
下载解压 boost 后使用的命令:
bootstrap
一旦 b2.exe 建成。我在cmd
中执行以下命令
b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
系统:Windows7(英特尔 i5 博锐)
编译器:gcc (mingw 4.8.1)
提升:提升 1.61.0
因此,进行更多研究后得出以下结果。
可以使用以下方法获取构建配置和其他构建输出
b2 [options]
b2 --help
显示可以使用的选项。我使用以下方法来准确诊断哪些目标失败或被跳过。
方法一
正如@JanHenke 在评论中所建议的那样,我 运行 相同的命令
b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
(如问题所述)再次。
结果:跳过所有已构建的目标,只显示失败的目标。
问题:如果有很多失败的目标,那么这只会淹没控制台并且很难找出发生了什么。
方法二
运行 命令(参见 1)和 select 全部来自命令提示符,使用鼠标右键单击,然后单击 gain 将其复制并粘贴到文本编辑器中,以便进行搜索。
结果:可以通过搜索失败或错误关键字
得出可用的见解
问题:仍然不是最佳方式,因为并非所有信息都在当前 cmd window 上可用。
方法 3
对我来说未完成 2. 工作,但应该肯定工作
创建一个 batchfile
,在其中写入命令,并使用 >
或 >>
运算符将所有打印在 cmd window 上的内容记录在文本文件中。
Result: Will be the best way (known to me till now) to know which exact targets are getting failed and a proper diagnostic action can be taken.
PS: 我发现在尝试使用 MinGW 构建序列化库时存在错误。在我面临的错误下方和一个 link to boost forum 讨论同样的错误。
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 and Reference2。
遗憾的是还没有找到解决方案。另外,这不是这个问题的范围。
我遇到了同样的问题。经过一些研究,我发现这是查看失败位置的最佳方式。
我的错误信息(取决于你的机器,你可能会看到不同的):
...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 跳过
我正在使用 mingw-4.8.1 在我的 windows 上构建提升,但有几个目标失败了。我的问题是,我不知道哪些特定目标失败了,哪些被跳过了。
Is there a way to list the failed/skipped targets after the build is completed?
这里是控制台输出:
...failed updating 20 targets...
...skipped 28 targets...
...updated 5789 targets...
下载解压 boost 后使用的命令:
bootstrap
一旦 b2.exe 建成。我在cmd
中执行以下命令b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
系统:Windows7(英特尔 i5 博锐)
编译器:gcc (mingw 4.8.1)
提升:提升 1.61.0
因此,进行更多研究后得出以下结果。
可以使用以下方法获取构建配置和其他构建输出
b2 [options]
b2 --help
显示可以使用的选项。我使用以下方法来准确诊断哪些目标失败或被跳过。
方法一
正如@JanHenke 在评论中所建议的那样,我 运行 相同的命令
b2 -j4 --build-dir=build toolset=gcc --build-type=complete --stagedir=C:\SW\Boost -sNO_BZIP2=1
(如问题所述)再次。
结果:跳过所有已构建的目标,只显示失败的目标。
问题:如果有很多失败的目标,那么这只会淹没控制台并且很难找出发生了什么。
方法二
运行 命令(参见 1)和 select 全部来自命令提示符,使用鼠标右键单击,然后单击 gain 将其复制并粘贴到文本编辑器中,以便进行搜索。
结果:可以通过搜索失败或错误关键字
得出可用的见解
问题:仍然不是最佳方式,因为并非所有信息都在当前 cmd window 上可用。
方法 3
对我来说未完成 2. 工作,但应该肯定工作
创建一个 batchfile
,在其中写入命令,并使用 >
或 >>
运算符将所有打印在 cmd window 上的内容记录在文本文件中。
Result: Will be the best way (known to me till now) to know which exact targets are getting failed and a proper diagnostic action can be taken.
PS: 我发现在尝试使用 MinGW 构建序列化库时存在错误。在我面临的错误下方和一个 link to boost forum 讨论同样的错误。
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 and Reference2。
遗憾的是还没有找到解决方案。另外,这不是这个问题的范围。
我遇到了同样的问题。经过一些研究,我发现这是查看失败位置的最佳方式。
我的错误信息(取决于你的机器,你可能会看到不同的):
...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 跳过