[CMake] Using Doxygen with Cmake
Pau Garcia i Quiles
pgquiles at elpauer.org
Mon May 21 12:48:08 EDT 2007
Quoting Raja Yalamanchili <yrpchandu at gmail.com>:
> Hi,
> I want to know whether cmake can be useful in generating doxygen
> documentation automatically when i execute my source code.I mean to say
> whenever i run my code i want doxygen to generate documentation
> automatically with ( if any )modifications.Is there a way in cmake to do
> this?
Indeed. There is a FindDoxygen.cmake package.
You may find useful the following code, which creates a "make doc"
target in you project:
# Create a "make doc" target using Doxygen
# Prototype:
# GENERATE_DOCUMENTATION(doxygen_config_file)
# Parameters:
# doxygen_config_file Doxygen configuration file (must 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 the amount of work, I usually need 10 days to answer)
More information about the CMake
mailing list