@@ -514,7 +514,10 @@ macro(_SETUP_DOXYGEN_DEFAULT_OPTIONS)
514514 # ---------------------------------------------------------------------------
515515 # Configuration options related to external references
516516 # ---------------------------------------------------------------------------
517- _set_if_undefined(DOXYGEN_GENERATE_TAGFILE "${PROJECT_NAME} .doxytag" )
517+ _set_if_undefined(
518+ DOXYGEN_GENERATE_TAGFILE
519+ "doxygen-html/${PROJECT_NAME} .doxytag"
520+ )
518521 # ---------------------------------------------------------------------------
519522 # Configuration options related to the dot tool
520523 # ---------------------------------------------------------------------------
@@ -592,9 +595,7 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
592595 add_dependencies (doc ${PROJECT_NAME} -doc )
593596
594597 add_custom_command (
595- OUTPUT
596- ${PROJECT_BINARY_DIR} /doc /${PROJECT_NAME} .doxytag
597- ${PROJECT_BINARY_DIR} /doc /doxygen-html
598+ OUTPUT ${PROJECT_BINARY_DIR} /doc /doxygen-html
598599 COMMAND ${DOXYGEN_EXECUTABLE} ${JRL_CMAKEMODULE_DOXYFILE_PATH}
599600 WORKING_DIRECTORY doc
600601 COMMENT "Generating Doxygen documentation"
@@ -606,7 +607,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
606607 APPEND
607608 PROPERTY
608609 ADDITIONAL_MAKE_CLEAN_FILES
609- ${PROJECT_BINARY_DIR} /doc /${PROJECT_NAME} .doxytag
610610 ${PROJECT_BINARY_DIR} /doc /doxygen.log
611611 ${PROJECT_BINARY_DIR} /doc /doxygen-html
612612 )
@@ -639,12 +639,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
639639
640640 # Install generated files.
641641 if (INSTALL_DOCUMENTATION)
642- if (EXISTS ${PROJECT_BINARY_DIR} /doc /${PROJECT_NAME} .doxytag)
643- install (
644- FILES ${PROJECT_BINARY_DIR} /doc /${PROJECT_NAME} .doxytag
645- DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} /doxygen-html
646- )
647- endif ()
648642 install (
649643 DIRECTORY ${PROJECT_BINARY_DIR} /doc /doxygen-html
650644 DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR}
@@ -674,19 +668,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
674668 endif (NOT DOXYGEN_FOUND)
675669endmacro (_SETUP_PROJECT_DOCUMENTATION)
676670
677- # REMOVE_DUPLICATES
678- # -----------------
679- #
680- # Remove duplicate values from a space separated list
681- function (REMOVE_DUPLICATES ARG_STR OUTPUT )
682- set (ARG_LIST ${ARG_STR} )
683- separate_arguments (ARG_LIST)
684- list (REMOVE_DUPLICATES ARG_LIST)
685- string (REGEX REPLACE "([^\\ ]|^);" "\\ 1 " _TMP_STR "${ARG_LIST} " )
686- string (REGEX REPLACE "[\\ ](.)" "\\ 1" _TMP_STR "${_TMP_STR} " ) # fixes escaping
687- set (${OUTPUT} "${_TMP_STR} " PARENT_SCOPE)
688- endfunction ()
689-
690671# _DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES
691672# ----------------------------------------
692673#
@@ -699,9 +680,11 @@ macro(_DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES DEPENDENCIES VAR_OUT)
699680 DEFINED ${PREFIX} _DOXYGENDOCDIR
700681 AND EXISTS ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag
701682 )
702- set (
683+ get_filename_component (DEP_DOCDIR "${${PREFIX} _DOXYGENDOCDIR}" ABSOLUTE )
684+ list (
685+ APPEND
703686 ${VAR_OUT}
704- "${ ${VAR_OUT} } \" ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag = ${${PREFIX} _DOXYGENDOCDIR }\" "
687+ "\" ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag = ${DEP_DOCDIR } \" "
705688 )
706689 endif ()
707690 if (DEFINED ${PREFIX} _DEPENDENCIES)
@@ -741,9 +724,9 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
741724 endif ()
742725 endif ()
743726 if (INSTALL_DOCUMENTATION)
744- # Find doxytag files To ignore this list of tag files, set variable
745- # DOXYGEN_TAGFILES
746- set (_TAGFILES_FROM_DEPENDENCIES " ${DOXYGEN_TAGFILES_FROM_DEPENDENCIES} " )
727+ # Find doxytag files. To ignore this list of tag files,
728+ # set the DOXYGEN_TAGFILES CMake variable or TAGFILES in doc/Doxyfile.extra.in.
729+ set (_TAGFILES_FROM_DEPENDENCIES ${DOXYGEN_TAGFILES_FROM_DEPENDENCIES} )
747730 set (PKG_REQUIRES ${_PKG_CONFIG_REQUIRES} )
748731 list (APPEND PKG_REQUIRES ${_PKG_CONFIG_COMPILE_TIME_REQUIRES} )
749732 foreach (PKG_CONFIG_STRING ${PKG_REQUIRES} )
@@ -758,16 +741,16 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
758741 DEFINED ${PREFIX} _DOXYGENDOCDIR
759742 AND EXISTS ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag
760743 )
761- file (
762- RELATIVE_PATH
744+ # always use absolute path
745+ get_filename_component (
763746 DEP_DOCDIR
764- ${CMAKE_INSTALL_FULL_DOCDIR}
765- ${ ${PREFIX} _DOXYGENDOCDIR}
747+ "${ ${PREFIX} _DOXYGENDOCDIR}"
748+ ABSOLUTE
766749 )
767-
768- set (
750+ list (
751+ APPEND
769752 _TAGFILES_FROM_DEPENDENCIES
770- "${_TAGFILES_FROM_DEPENDENCIES} \" ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag = ${DEP_DOCDIR} \" "
753+ "\" ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag = ${DEP_DOCDIR} \" "
771754 )
772755 endif ()
773756 endforeach ()
@@ -776,9 +759,15 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
776759 _TAGFILES_FROM_DEPENDENCIES
777760 )
778761 if (_TAGFILES_FROM_DEPENDENCIES)
779- REMOVE_DUPLICATES (
780- ${_TAGFILES_FROM_DEPENDENCIES}
762+ # use native deduplication routine for comma-separated lists, then
763+ # convert comma-separated list to space-separated list string.
764+ list (REMOVE_DUPLICATES _TAGFILES_FROM_DEPENDENCIES)
765+ string (
766+ REPLACE
767+ ";"
768+ " "
781769 DOXYGEN_TAGFILES_FROM_DEPENDENCIES
770+ "${_TAGFILES_FROM_DEPENDENCIES} "
782771 )
783772 endif ()
784773 endif ()
0 commit comments