On 06.08.2018 04:04 Greg Ercolano wrote:
> On 08/05/18 17:15, Albrecht Schlosser wrote:
>> One more thought: what if your bleeding edge doxygen version generates
>> "newer" latex code that your latex version doesn't understand? Can you
>> downgrade and use an older doxygen version again?
>
> Yes! Good call.
>
> Reverting to the older doxygen does seem to get rid of the complaints
> about Fl_File_Chooser, and 'make pdf' now works with no errors.
Great!
> The OS installed doxygen (1.8.5) was still in /usr/bin,
> so I just renamed away the newer one in /usr/local/bin (1.8.15),
> reran configure (to get the new path), and then 'make pdf' worked fine,
> [...]
FWIW: I installed all different doxygen versions in their own paths
(even with `make install`) after configuring each doxygen build with
another prefix. Then I can use CMake to pick the version I want and run
`make pdf' or `ninja pdf'.
With cmake-gui you can easily (re-)configure to test another doxygen
version or you can even have different build dir's for different doxygen
versions. The latter is what I was using to test the FLTK docs.
With configure it's likely `./configure --with-doxygen=/path/to/doxygen'
or you can edit 'makeinclude' after configure.
> I didn't even need to pull your latest git commit, though I will later
> just to see if there's a difference.
>
> So I'd call that solved..!
Meanwhile I'd say "yes". I pushed another commit that *really* fixed the
underlying "caption" cause, but now it gets weirder and weirder.
The "caption" issue was that doxygen can't render class names (and
supposedly other object names with special formatting and links) in the
caption. Unfortunately all three ocurrences of <caption> tags in HTML
tables had the class name in their text. Otherwise it would likely have
been easier to isolate the real problem. My latest commit removes the
class names from the captions and re-enables them which means we have a
working pdf generation again.
However, my further tests revealed:
(1) doxygen 1.8.14 is seriously broken. This version issues warnings and
generates wrong (latex) code and is unusable for our (pdf) docs. An
example in my tests yields:
Generating docs for compound Fl_Input...
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:18:
warning: expected <tr> or <caption> tag but found <br> instead!
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:18:
warning: Unexpected tag <caption> found
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:18:
warning: Unexpected tag </caption> found
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:29:
warning: expected <tr> or <caption> tag but found <br> instead!
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:29:
warning: Unexpected tag <caption> found
/home/albrecht/git/fltk-test/doxy_test/html_comment_in_table.h:29:
warning: Unexpected tag </caption> found
$ grep -n br html_comment_in_table.h
4: Doxygen Error Report: HTML comment breaks parser.
11: HTML comment within table breaks parser.
File contents:
1 /**
2 \file html_comment_in_table.h
3
4 Doxygen Error Report: HTML comment breaks parser.
5
6 Doxygen version: 1.8.14.
7
8 */
9
10 /**
11 HTML comment within table breaks parser.
12
13 <table>
14 <!-- This is a comment. -->
15 <caption align="top">This is a table caption.</caption>
16 <tr>
17 <td nowrap="nowrap" width="1%"><b>Mouse button 1</b></td>
18 <td>Moves the cursor to this point. ...</td>
19 </tr>
20 </table>
21 */
22
23 class Fl_Input {
24 int unused;
25 public:
26 Fl_Input(int, int, int, int, const char * = 0);
27 };
28
29 // End of file
(2) Doxygen 1.8.15 (git master, not released) is not much better. I can
replicate the error message you mentioned before. This seems like a
parser error as well. But it's not yet released, so maybe there's still
hope.
/home/albrecht/git/fltk-test/src/Fl_File_Chooser2.cxx:190: warning: no
uniquely matching class member found for
void Fl_File_Chooser::filter(char< em > p)
Possible candidates:
void Fl_File_Chooser::filter(const char *p)' at line 137 of file
/home/albrecht/git/fltk-test/FL/Fl_File_Chooser.H
const char * Fl_File_Chooser::filter()' at line 138 of file
/home/albrecht/git/fltk-test/FL/Fl_File_Chooser.H
The function reference in the file is obviously correct, but it seems
that the parser is wrong: "void Fl_File_Chooser::filter(char< em > p)".
Where does "char< em >" come from? The source file is different.
Strange...
At least 1.8.13 (installed in Ubuntu 18.04 LTS) seems to work well
except for the <caption> bug.