1
votes

I have a C project I document with doxygen. The HTML-output looks ok. When I generate latex output everything seems to work fine at first, too. When I run the "make.bat" generated by doxygen (for compiling the latex output to pdf) I get the error mentioned in the title.

It always occurs when "Chapter 4" is being processed. Chapter 4 holds the data structure list. In the resulting pdf this chapter is empty. Obviously that's because this "annotated.tex" file is missing.

What went wrong here? Why is there no content being generated for this chapter? I don't even know where to start looking... Nothing in this regard struck my attention in the doxygen log.

Is there a way to control which chapters with what content doxygen generates for latex at all? Is it somehow connected to the DoxygenLayout.xml file?

Thanks in advance for any hints.

I use Doxygen version 1.8.9.1 for windows. I guess every C code that declares some sort of data structures can trigger this error. I used this for testing:

common.c:

/** @file
 * 
 *  Allgemeine Hilfsfunktionen, Implementierung.
 *  Siehe auch common.h
 *
 *  @date Erstellt 08.10.2014 11:24:23
 *  @author Hans Wurst
 */ 

#include "common.h"

/// Array mit den Ziffern 0..F einer Hexadezimalzahl (ASCII).
const char hex_digits[16] PROGMEM = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
/// Versionsstring des Betriebssystems im Flash-Speicher.
const char mcu_version_str[5] PROGMEM = MCU_VERSION_STR;

/** Konvertiere vorzeichenlose 8Bit-Ganzzahl in 2 Zeichen String.
 *
 *  String hat die Form "8F" (für n=8F). Kein abschließendes 0-Byte wird
 *  gesetzt.
 *
 *  @param[in]  n    Vorzeichenlose 8Bit-Ganzzahl
 *  @param[out] dest Zeiger auf String, wo 2 Zeichen Hex-Zahl platziert werden
 *                   soll.
 */
void to_hex_str(const uint8_t n, char *dest) {
// Code
}

common.h:

/** @file
 *  Allgemeine Hilfsfunktionen.
 *
 *  Siehe auch common.c
 *
 *  @date Erstellt 09.04.2014
 *  @author Hans Wurst
 */
/** @defgroup TEST_GRP
 *  Das ist einfach mal eine Testgruppe mit wenig Zeug...
 */
/// @{ 
#ifndef COMMON_H_
#define COMMON_H_

// **************** Definitionen ****************

/// Versionsstring des Betriebssystems
#define MCU_VERSION_STR "0.01"

/// 24Bit-Pointer-Typ
typedef uint8_t ptr24_t[3];

/// 32Bit dword-Typ mit verschiedenen Zugriffsmöglichkeiten.
union dword {
    uint8_t byte[4];
    uint16_t word[2];
    uint32_t dword;
};
// Ende Definitionen


// **************** Variablendeklarationen ****************
#ifndef __DOXYGEN__
extern const char mcu_version_str[5];
extern const char hex_digits[16];
extern void to_hex_str(const uint8_t n, char *dest);
#endif
/// @}

#endif /* COMMON_H_ */

My doxyfile: http://pastebin.com/ZPqhsYSy It's mostly default stuff...

1
Which version of doxygen did you use? When not 1.8.9.1 can you try this otherwise can yo supply a small example (source + Doxyfile) to reproduce the problem (best to post it in the doxygen mailing list or as a bug report.albert
Thanks for your reply. Added some details and example and will post this in the mailing list, too.Bytemaster
I tried with the given common.c, common.h and Doxyfile to reproduce the problem but was not able to reproduce it. I've created a directory doc with the Doxyfile and a parallel directory c_src with the common.* but in the created sub directory the annotated.tex is present. As a small note I would set the OUTPUT_LANGUAGE to German as all your documentation is in the German language.albert

1 Answers

0
votes

I tried to reproduce alberts tests and: The problem indeed didn't show up. The obvious difference is my DoxygenLayout.xml file where I commented out some classes and namespace related stuff thinking "I use good old C, what do I need this for anyways?" The culprit seems to be the <tab type="classes" ...> block below <navindex>. When commented out, annotated.tex doesn't get generated, but is still included from some tex file... Certainly something that could be improved in doxygen.