Commit 97a9a356 authored by Robert Dailey's avatar Robert Dailey
Browse files

FindDoxygen: Use a stable reference to the location of global resources



FindDoxygen generates some files based on the version of Doxygen whose
content will not vary across a project and are therefore a global
resource that can be shared by all calls to `find_package(Doxygen)` and
to `doxygen_add_docs`.  We currently use `${PROJECT_BINARY_DIR}` to
reference their location, but this is not stable because `project()`
calls in a subdirectory can change it.  Use `${CMAKE_BINARY_DIR}`
instead.
Reviewed-by: Craig Scott's avatarCraig Scott <craig.scott@crascit.com>
Fixes: #17022
parent 594b0f80
...@@ -619,7 +619,7 @@ if(TARGET Doxygen::doxygen) ...@@ -619,7 +619,7 @@ if(TARGET Doxygen::doxygen)
# If doxygen was found, use it to generate a minimal default Doxyfile. # If doxygen was found, use it to generate a minimal default Doxyfile.
# We will delete this file after we have finished using it below to # We will delete this file after we have finished using it below to
# generate the other files that doxygen_add_docs() will use. # generate the other files that doxygen_add_docs() will use.
set(_Doxygen_tpl "${PROJECT_BINARY_DIR}/CMakeDoxyfile.tpl") set(_Doxygen_tpl "${CMAKE_BINARY_DIR}/CMakeDoxyfile.tpl")
execute_process( execute_process(
COMMAND "${DOXYGEN_EXECUTABLE}" -s -g "${_Doxygen_tpl}" COMMAND "${DOXYGEN_EXECUTABLE}" -s -g "${_Doxygen_tpl}"
OUTPUT_QUIET OUTPUT_QUIET
...@@ -646,8 +646,8 @@ if(TARGET Doxygen::doxygen) ...@@ -646,8 +646,8 @@ if(TARGET Doxygen::doxygen)
# content is only dependent on the version of Doxygen being used. Therefore # content is only dependent on the version of Doxygen being used. Therefore
# we always put them at the top of the build tree so that they are in a # we always put them at the top of the build tree so that they are in a
# predictable location. # predictable location.
set(_doxyfile_in "${PROJECT_BINARY_DIR}/CMakeDoxyfile.in") set(_doxyfile_in "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
set(_doxyfile_defaults "${PROJECT_BINARY_DIR}/CMakeDoxygenDefaults.cmake") set(_doxyfile_defaults "${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake")
file(WRITE "${_doxyfile_in}" ${_Doxygen_dne_header}) file(WRITE "${_doxyfile_in}" ${_Doxygen_dne_header})
file(WRITE "${_doxyfile_defaults}" ${_Doxygen_dne_header}) file(WRITE "${_doxyfile_defaults}" ${_Doxygen_dne_header})
...@@ -896,7 +896,7 @@ doxygen_add_docs() for target ${targetName}") ...@@ -896,7 +896,7 @@ doxygen_add_docs() for target ${targetName}")
# Now bring in Doxgen's defaults for those things the project has not # Now bring in Doxgen's defaults for those things the project has not
# already set and we have not provided above # already set and we have not provided above
include("${PROJECT_BINARY_DIR}/CMakeDoxygenDefaults.cmake" OPTIONAL) include("${CMAKE_BINARY_DIR}/CMakeDoxygenDefaults.cmake" OPTIONAL)
# Cleanup built HTMLs on "make clean" # Cleanup built HTMLs on "make clean"
# TODO Any other dirs? # TODO Any other dirs?
...@@ -1025,7 +1025,7 @@ doxygen_add_docs() for target ${targetName}") ...@@ -1025,7 +1025,7 @@ doxygen_add_docs() for target ${targetName}")
endforeach() endforeach()
# Prepare doxygen configuration file # Prepare doxygen configuration file
set(_doxyfile_template "${PROJECT_BINARY_DIR}/CMakeDoxyfile.in") set(_doxyfile_template "${CMAKE_BINARY_DIR}/CMakeDoxyfile.in")
set(_target_doxyfile "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.${targetName}") set(_target_doxyfile "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.${targetName}")
configure_file("${_doxyfile_template}" "${_target_doxyfile}") configure_file("${_doxyfile_template}" "${_target_doxyfile}")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment