Quoting [EMAIL PROTECTED]:

Hi all,

currently I can generate for some subdirectories my Latex and Doxygen documentation. This is done like it is described in the cmake FAQ. What I now want to do is to collect all this commands of the subdirectory and put it in an unique common build command, e.g. make doc. The idea is that the user can generate all documents with one common command, like cmake currently does during source build when a user types make all.

The problem is that when I add a custom target it doesn't know about targets given by a ADD_SUBDIRECTORY command.

Consider following structure:

\src
 \modules
  \module1 -> some docu
  \module2 -> some docu
  \module3 -> some docu
 \tools
  \tool1 -> some docu
  \tool2 -> some docu

Then think about the user who types in "make doc" and all documents of the whole build is generated.

Is it with current release (cmake 2.4.7) possible to generate such a command for generating documentation?

If not so. Does the next big step of cmake (cmake 2.5 or 2.6 ???) consider something like a doc command in it? Similar to the install command which collects all informations of the to installable files.

Thanks for your help.

Greetings

Alexander

I'm using this:

# Create a "make doc" target using Doxygen
# Prototype:
#     GENERATE_DOCUMENTATION(doxygen_config_file)
# Parameters:
# doxygen_config_file Doxygen configuration file (must be in the root of the source directory)


MACRO(GENERATE_DOCUMENTATION DOXYGEN_CONFIG_FILE)
FIND_PACKAGE(Doxygen)
SET(DOXYFILE_FOUND false)
IF(EXISTS ${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE})
    SET(DOXYFILE_FOUND true)
ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE})

IF( DOXYGEN_FOUND )
    IF( DOXYFILE_FOUND )
        # Add target
ADD_CUSTOM_TARGET( doc ALL ${DOXYGEN_EXECUTABLE} "${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE}" )

# Add .tag file and generated documentation to the list of files we must erase when distcleaning

        # Read doxygen configuration file
FILE( READ ${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE} DOXYFILE_CONTENTS )
        STRING( REGEX REPLACE "\n" ";" DOXYFILE_LINES ${DOXYFILE_CONTENTS} )

        # Parse .tag filename and add to list of files to delete if it exists
        FOREACH( DOXYLINE ${DOXYFILE_CONTENTS} )
STRING( REGEX REPLACE ".*GENERATE_TAGFILE *= *([^ ^\n]+).*" "\\1" DOXYGEN_TAG_FILE ${DOXYLINE} )
        ENDFOREACH( DOXYLINE )
        ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${DOXYGEN_TAG_FILE} )

# Parse doxygen output doc dir and add to list of files to delete if it exists
        FOREACH( DOXYLINE ${DOXYFILE_CONTENTS} )
STRING( REGEX REPLACE ".*OUTPUT_DIRECTORY *= *([^ ^\n]+).*" "\\1" DOXYGEN_DOC_DIR ${DOXYLINE} )
        ENDFOREACH( DOXYLINE )
        ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${DOXYGEN_DOC_DIR} )
        ADD_TO_DISTCLEAN( ${PROJECT_BINARY_DIR}/${DOXYGEN_DOC_DIR}.dir )

    ELSE( DOXYFILE_FOUND )
MESSAGE( STATUS "Doxygen configuration file not found - Documentation will not be generated" )
    ENDIF( DOXYFILE_FOUND )
ELSE(DOXYGEN_FOUND)
    MESSAGE(STATUS "Doxygen not found - Documentation will not be generated")
ENDIF(DOXYGEN_FOUND)
ENDMACRO(GENERATE_DOCUMENTATION)

--
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to