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

Reply via email to