Hello All. I've downloaded the 1.8.16 version for both Windows and Linux.
On windows 10, with both Python 2.7 and 3.6.8 filtering breaks file parsing, Doxygen won't even list the file, even though I do see the "Preprocessing" and "Parsing file" in the console. On a Linux VM (Ubuntu 18.04.2 LTS) with the 1.8.16 Linux binary and Python 3.6.8 everything works fi ne. I just got my machined upgraded to Windows 10, but I'm pretty sure this used to word with doxygen 1.8.15 and Python 2.7. I'll fill a bug about this issue. Thanks! From: Leonardo Pereira Santos Sent: Thursday, August 22, 2019 2:48 PM To: 'doxygen-users@lists.sourceforge.net' <doxygen-users@lists.sourceforge.net> Subject: Auto-link broken for filtered files? Hello All! I'm trying to fix some proprietary compiler directives by using a filter. I discovered that if I pass a file through a filter, the file documentation is generated correctly, but auto-linking seems broken! I came up with a very simple example. My filter is implemented in Python and it just opens the file and prints every single line, it doesn't change anything. I confirmed this by comparing the filter's input and output (by redirection) with a diff and there are no differences at all. I redirected the filter's output to a file called filtered_c.h. If I include this file as a source file, I get auto-link to work. If I pass the original header file through the filter, auto-linking is broken and I get a warning latex_double.md:7: warning: unable to resolve reference to `some_c_function' for \ref command If I comment out the FILTER_PATTERNS line in the Doxyfile, auto-linking works. This is really an issue for me, as I'm also supporting parsing assembly files through a filter script and I see the same behavior there: the file documentation is perfect, but no auto-linking. Any thoughts are very welcome! Thanks! This is my Doxyfile: # General options PROJECT_NAME = "Double table headers in LaTeX" INPUT = doc/latex_double.md INPUT += include/regular_c.h #INPUT += filtered_c.h #You should not need to change the rest of the file OUTPUT_DIRECTORY = output_doc GENERATE_HTML = YES GENERATE_TREEVIEW = YES GENERATE_LATEX = YES OPTIMIZE_OUTPUT_FOR_C = YES FILTER_PATTERNS += *.h="c:\Python27\python filter\dummy_filter.py" My filter is: from __future__ import print_function import sys if len(sys.argv) != 2: sys.exit(1) def extract_globals(filename): with open(filename, 'r') as infile: for line in infile: print(line, end='') extract_globals(sys.argv[1]) My Markdown source is: # Chapter Title {#chapter_title} Some text here # Introduction {#chapter_intro} Loren Ipsum @ref some_c_function And my header file is: /** * @file regular_c.h * @brief This is a simple C header file with some examples. */ #ifndef REGULAR_C_H_ #define REGULAR_C_H_ /* ---------------------------------------------------------------------------- * If building with a C++ compiler, make all of the definitions in this header * have a C binding. * ------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #endif /* ifdef __cplusplus */ /* ---------------------------------------------------------------------------- * Include files * --------------------------------------------------------------------------*/ /* ---------------------------------------------------------------------------- * Defines * --------------------------------------------------------------------------*/ /* ---------------------------------------------------------------------------- * Global variables and types * --------------------------------------------------------------------------*/ /** * This enumeration has the return codes for the @ref some_c_function function. */ typedef enum __SOME_C_FUNCTION_RETURN { SOME_C_FUNCTION_RETURN_everthing_ok = 0, ///< Nothing to see here SOME_C_FUNCTION_RETURN_some_weird_error, ///< This is not the error you're looking for SOME_C_FUNCTION_RETURN_some_very_bad_error, ///< This is not the error we are looking for SOME_C_FUNCTION_RETURN_life_is_sad_just_cope ///< Move along } SOME_C_FUNCTION_RETURN; /* ---------------------------------------------------------------------------- * Function prototype definitions * --------------------------------------------------------------------------*/ /** * @brief Some C function that is here just as an example. * * This function doesn't actually do anything useful. * * @param[in] v We do something with this value. * @param[out] ptr Some value will be written here. * * @return Returns a value that depends on what happened: * - @ref SOME_C_FUNCTION_RETURN_everthing_ok * Uh, everything is under control. Situation normal. * - @ref SOME_C_FUNCTION_RETURN_some_weird_error * Uh, had a slight weapons malfunction. * - @ref SOME_C_FUNCTION_RETURN_some_very_bad_error * We had a reactor leak here now. Give us a few minutes to lock it down. * Large leak... very dangerous. * - @ref SOME_C_FUNCTION_RETURN_life_is_sad_just_cope * Who is this?? What's your operating number? * */ int some_c_function(uint32_t v, void* ptr); /* ---------------------------------------------------------------------------- * Close the 'extern "C"' block * ------------------------------------------------------------------------- */ #ifdef __cplusplus } #endif /* ifdef __cplusplus */ #endif /* REGULAR_C_H_ */ Any thoughts are very welcome! Thanks! Regards, ____________________________________________________________ Leonardo Pereira Santos | ON Semiconductor Design Engineer 200-611 Kumpf Dr | Waterloo, Ontario, Canada, N2N 1A8 519-884-9696 x2269 (O) | leonardo.pereirasan...@onsemi.com<mailto:leonardo.pereirasan...@onsemi.com>
_______________________________________________ Doxygen-users mailing list Doxygen-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/doxygen-users