Strange failure to build Quickbook, Doxygen and Autoindex and specialization std::numeric_limits
"Paul A. Bristow" <[email protected]> Wed, 11 Mar 2015 16:47:04 -0000
| Newsgroups | gmane.comp.lib.boost.documentation |
|---|---|
| Message-ID | <[email protected]> |
Short version: I have been building a prototype documentation for a fixed-point library using Quickbook, Doxygen and Autoindex enabled . It includes a specialization of std::numeric_limits. It fails to build, but only if it includes a specialization of std::numeric_limits *and* index enabled. The most helpful message is from Doxygen: " error: Cannot open file I:/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbo se-on/auto-index-on/threading-multi/autodoc-xml/classstd_1_1numeric__limits_3_01boost_1_1math_1_1 fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6.xml for writing! " I can live with removing numeric_limits conditionally (it isn't terribly useful anyway). (I think have seen this problem, before but pushed it under the carpet ;-) Any ideas? (Place back under carpet?) Paul PS Long version - see attached. --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830 _______________________________________________ Boost-docs mailing list [email protected] http://lists.boost.org/mailman/listinfo.cgi/boost-docs
doxerror.txt
(text/plain, 5.2 KB)
I have been building a prototype documentation for a fixed-point library using Quickbook, Doxygen and Autoindex . It includes a specialization std::numeric_limits.
All works OK without an auto-index
>b2 -a > doc.log
Only if I add --enable-index
b2 -a --enable-index > doc_index.log
it fails to generate html correctly with two error reports:
Error report 1: doxywarning file (using <doxygen:param>WARN_LOGFILE=doxywarnings.log) says:
error: Cannot open file
I:/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/classstd_1_1numeric__limits_3_01boost_1_1math_1_1
fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6.xml for writing!
This does not exist in I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml
but lots of others do.
File namespacestd.xml contains a reference to this file that could not be written.
<innerclass refid="classstd_1_1numeric__limits_3_01boost_1_1math_1_1fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6" prot="public">std::numeric_limits< boost::math::fixed_point::negatable< range, resolution, round_mode, overflow_mode > ></innerclass>
This looks as though it causes trouble later on using the autodoc-xml\index.xmlfile at line 408
(see ...resolu7207871e2843a3ccd659eb78939f39a6 below in autodox-xml/index.xml)
Error report 2: b2 log files says:
xslt-xsltproc.windows ..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen
file:///I%3A/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/index.xml:445: parser error : Opening and ending tag mismatch: compound line 408 and doxygenindex
</doxygenindex>
^
file:///I%3A/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/index.xml:446: parser error : Premature end of data in tag doxygenindex line 2
^
unable to parse I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml
set XML_CATALOG_FILES=../../../bin.v2/boostbook_catalog.xml
"C:/Program Files (x86)/xsltproc_win32/xsltproc.exe" --stringparam doxygen.xml.path "I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml" --xinclude -o "..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen" "I:\modular-boost\tools\boostbook\xsl\doxygen\collect.xsl" "I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml"
...failed xslt-xsltproc.windows ..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen...
I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml
autodoc-xml\index.xml
at error line 408 has
<compound refid="classstd_1_1numeric__limits_3_01boost_1_1math_1_1fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6" kind="class">
<name>std::numeric_limits< boost::math::fixed_point::negatable< range, resolution, round_mode, overflow_mode > >
</name>
but missing an expected ending tag </compound>
* If exclude std namespace section with a doxygen \cond statement,
//! \cond STDLIMITS
// Provide a specialization of std::numeric_limits<negatable>.
namespace std
{
template<const int range,
const int resolution,
const boost::math::fixed_point::round::round_type round_mode,
const boost::math::fixed_point::overflow::overflow_type overflow_mode>
class numeric_limits<boost::math::fixed_point::negatable<range, resolution, round_mode, overflow_mode> >
//! \endcond
then it builds OK, including the index.
* If I exclude the template class numeric_limits using \cond \endcond, then it builds OK.
* If I exclude just the static functions, it fails.
* If I exclude all the private and public, or just private, it fails.
* If provide just a forward declaration of class numeric_limits<fixed_point_negatable_type>, it builds OK.
* If I use the Doxygen doxywizard to build standalone doxygen html, all goes as expected, with no warnings.
So the problem would seem to lie with the first warning from doxygen that it is unable to write to a file.
Is this because something is still open from preparing auto-index?
(Reminder: without enable-index, it builds doxygen C++ reference OK).
I can live with removing numeric_limits conditionally (it isn't very useful).
(I think have seen this problem before but pushed it under the carpet ;-)
Any ideas?
(Place back under carpet?)
Paul