@@ -514,7 +514,10 @@ macro(_SETUP_DOXYGEN_DEFAULT_OPTIONS)
514
514
# ---------------------------------------------------------------------------
515
515
# Configuration options related to external references
516
516
# ---------------------------------------------------------------------------
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
+ )
518
521
# ---------------------------------------------------------------------------
519
522
# Configuration options related to the dot tool
520
523
# ---------------------------------------------------------------------------
@@ -592,9 +595,7 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
592
595
add_dependencies (doc ${PROJECT_NAME} -doc )
593
596
594
597
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
598
599
COMMAND ${DOXYGEN_EXECUTABLE} ${JRL_CMAKEMODULE_DOXYFILE_PATH}
599
600
WORKING_DIRECTORY doc
600
601
COMMENT "Generating Doxygen documentation"
@@ -606,7 +607,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
606
607
APPEND
607
608
PROPERTY
608
609
ADDITIONAL_MAKE_CLEAN_FILES
609
- ${PROJECT_BINARY_DIR} /doc /${PROJECT_NAME} .doxytag
610
610
${PROJECT_BINARY_DIR} /doc /doxygen.log
611
611
${PROJECT_BINARY_DIR} /doc /doxygen-html
612
612
)
@@ -639,12 +639,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
639
639
640
640
# Install generated files.
641
641
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 ()
648
642
install (
649
643
DIRECTORY ${PROJECT_BINARY_DIR} /doc /doxygen-html
650
644
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR}
@@ -674,19 +668,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
674
668
endif (NOT DOXYGEN_FOUND)
675
669
endmacro (_SETUP_PROJECT_DOCUMENTATION)
676
670
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
-
690
671
# _DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES
691
672
# ----------------------------------------
692
673
#
@@ -699,9 +680,11 @@ macro(_DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES DEPENDENCIES VAR_OUT)
699
680
DEFINED ${PREFIX} _DOXYGENDOCDIR
700
681
AND EXISTS ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag
701
682
)
702
- set (
683
+ get_filename_component (DEP_DOCDIR "${${PREFIX} _DOXYGENDOCDIR}" ABSOLUTE )
684
+ list (
685
+ APPEND
703
686
${VAR_OUT}
704
- "${ ${VAR_OUT} } \" ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag = ${${PREFIX} _DOXYGENDOCDIR }\" "
687
+ "\" ${${PREFIX} _DOXYGENDOCDIR}/${PREFIX} .doxytag = ${DEP_DOCDIR } \" "
705
688
)
706
689
endif ()
707
690
if (DEFINED ${PREFIX} _DEPENDENCIES)
@@ -741,9 +724,9 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
741
724
endif ()
742
725
endif ()
743
726
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} )
747
730
set (PKG_REQUIRES ${_PKG_CONFIG_REQUIRES} )
748
731
list (APPEND PKG_REQUIRES ${_PKG_CONFIG_COMPILE_TIME_REQUIRES} )
749
732
foreach (PKG_CONFIG_STRING ${PKG_REQUIRES} )
@@ -758,16 +741,16 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
758
741
DEFINED ${PREFIX} _DOXYGENDOCDIR
759
742
AND EXISTS ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag
760
743
)
761
- file (
762
- RELATIVE_PATH
744
+ # always use absolute path
745
+ get_filename_component (
763
746
DEP_DOCDIR
764
- ${CMAKE_INSTALL_FULL_DOCDIR}
765
- ${ ${PREFIX} _DOXYGENDOCDIR}
747
+ "${ ${PREFIX} _DOXYGENDOCDIR}"
748
+ ABSOLUTE
766
749
)
767
-
768
- set (
750
+ list (
751
+ APPEND
769
752
_TAGFILES_FROM_DEPENDENCIES
770
- "${_TAGFILES_FROM_DEPENDENCIES} \" ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag = ${DEP_DOCDIR} \" "
753
+ "\" ${${PREFIX} _DOXYGENDOCDIR}/${LIBRARY_NAME} .doxytag = ${DEP_DOCDIR} \" "
771
754
)
772
755
endif ()
773
756
endforeach ()
@@ -776,9 +759,15 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
776
759
_TAGFILES_FROM_DEPENDENCIES
777
760
)
778
761
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
+ " "
781
769
DOXYGEN_TAGFILES_FROM_DEPENDENCIES
770
+ "${_TAGFILES_FROM_DEPENDENCIES} "
782
771
)
783
772
endif ()
784
773
endif ()
0 commit comments