summaryrefslogtreecommitdiff
path: root/Modules/FindDoxygen.cmake
diff options
context:
space:
mode:
authorRobert Dailey <rcdailey@gmail.com>2017-06-30 09:29:49 -0500
committerRobert Dailey <rcdailey@gmail.com>2017-07-06 10:00:28 -0500
commit796b8fcb14072bef72fe324015c0a62e2006b0db (patch)
tree5c21c3174df472e72a8e20388336072755d4ddce /Modules/FindDoxygen.cmake
parentcf9a994d9a53db02d8ddaa2bf3f9da0bc8f6f19b (diff)
downloadcmake-796b8fcb14072bef72fe324015c0a62e2006b0db.tar.gz
FindDoxygen: Create DOXYGEN_OUTPUT_DIRECTORY if it doesn't exist
If the doxygen output directory does not exist, create it prior to running the doxygen commands.
Diffstat (limited to 'Modules/FindDoxygen.cmake')
-rw-r--r--Modules/FindDoxygen.cmake14
1 files changed, 11 insertions, 3 deletions
diff --git a/Modules/FindDoxygen.cmake b/Modules/FindDoxygen.cmake
index fb16f20625..46bf340dd5 100644
--- a/Modules/FindDoxygen.cmake
+++ b/Modules/FindDoxygen.cmake
@@ -179,7 +179,8 @@ Functions
will be converted to an absolute path relative to the current binary
directory. This is necessary because doxygen will normally be run from a
directory within the source tree so that relative source paths work as
- expected.
+ expected. If this directory does not exist, it will be recursively created
+ prior to executing the doxygen commands.
To change any of these defaults or override any other Doxygen config option,
set relevant variables before calling ``doxygen_add_docs()``. For example:
@@ -1020,6 +1021,13 @@ doxygen_add_docs() for target ${targetName}")
WARN_LOGFILE
XML_OUTPUT
)
+
+ # Store the unmodified value of DOXYGEN_OUTPUT_DIRECTORY prior to invoking
+ # doxygen_quote_value() below. This will mutate the string specifically for
+ # consumption by Doxygen's config file, which we do not want when we use it
+ # later in the custom target's commands.
+ set( _original_doxygen_output_dir ${DOXYGEN_OUTPUT_DIRECTORY} )
+
foreach(_item IN LISTS _doxygen_quoted_options)
doxygen_quote_value(DOXYGEN_${_item})
endforeach()
@@ -1030,8 +1038,8 @@ doxygen_add_docs() for target ${targetName}")
configure_file("${_doxyfile_template}" "${_target_doxyfile}")
# Add the target
- add_custom_target(
- ${targetName}
+ add_custom_target( ${targetName} VERBATIM
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${_original_doxygen_output_dir}
COMMAND "${DOXYGEN_EXECUTABLE}" "${_target_doxyfile}"
WORKING_DIRECTORY "${_args_WORKING_DIRECTORY}"
DEPENDS "${_target_doxyfile}"