.netvisual-studiocontinuous-integrationjenkinsdoxygen

Relative paths in Doxygen to allow continuous integration


The aim is to create the documentation for my whole Visual Studio C# solution automatically with Doxygen. This should happen on an external buildserver with Jenkins. The structure of my project is like that:

Root
    Tools
        doxygen-1.8.0
            doxygen.exe
    Project1
        bin
        ...
    Project2
        bin
        ...
    ...

When creating a doxyfile with the Doxywizard, the paths for the input and output are unfortunately absolute - which means that they depend on my developer machine and won't work on the Jenkins server anymore. Do you know how I can fix that? I have the suspicion that this has something to do with Doxygen's FULL_PATH_NAMESand STRIP_FROM_PATH, but to be honest, I don't get the descriptions of those two parameters. Maybe I am wrong and this hasn't anything to do with the 2 parameters at all.


Solution

  • I'm not sure whether doxygen on Windows expects the configuration file to use Windows paths (with the backslash separator) or Unix paths (with the forward slash). Regardless, you should make sure your paths are relative to the directory from which you run doxygen.

    In your Doxyfile, set the INPUT list and OUTPUT_DIRECTORY to relative paths. Assuming you're running from within Root:

    INPUT = ./Project1 \
            ./Project2
    

    In general, you should update all the variables that specify paths to be relative (and make sure your resources are checked into source control).

    In some of our projects, I've found it convenient to set the OUTPUT_DIRECTORY via an environment variable:

    OUTPUT_DIRECTORY = $(DOXYGEN_OUTOUT_DIR)
    

    in others, its just a relative path:

    OUTPUT_DIRECTORY = ./gen/docs
    

    The leading ./ is not strictly necessary, but it's a readable indicator that this is a relative path.

    The FULL_PATH_NAMES variable will not help you, it controls how the files appear in the generated File List.