diff options
Diffstat (limited to 'modules/TDEMacros.cmake')
-rw-r--r-- | modules/TDEMacros.cmake | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake index fa1ad61..5f977ae 100644 --- a/modules/TDEMacros.cmake +++ b/modules/TDEMacros.cmake @@ -3241,6 +3241,54 @@ endmacro( ) ################################################# ##### +##### tde_add_project_apidocs + +function( tde_add_project_apidocs ) + + if( NOT APIDOX_HTML_DIR ) + set( APIDOX_HTML_DIR "${HTML_INSTALL_DIR}/en/${PROJECT_NAME}/" CACHE PATH "Path for apidocs installation" ) + endif() + + set(APIDOX_PROJECT_NAME "${PROJECT_NAME}" CACHE STRING "Project name used for apidocs" ) + set(APIDOX_OUTPUT_DIR "${CMAKE_BINARY_DIR}/apidocs/" CACHE INTERNAL "" ) + + add_custom_target( apidox + COMMAND ${CMAKE_COMMAND} -E echo Apidox build requested + ) + + file( GLOB_RECURSE _dox_cmake_files RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/*Doxyfile.cmake ) + foreach( _dox_cmake_file IN LISTS _dox_cmake_files ) + get_filename_component( _filename ${_dox_cmake_file} NAME ) + get_filename_component( _dir ${_dox_cmake_file} PATH ) + set(APIDOX_SOURCE_DIR ${PROJECT_SOURCE_DIR}/${_dir}) + string( REGEX REPLACE "\.cmake$" "" _tgtname "${_filename}" ) + configure_file( ${APIDOX_SOURCE_DIR}/${_filename} ${_tgtname} ) + endforeach() + + file( GLOB_RECURSE _doxy_files RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/*Doxyfile ${PROJECT_BINARY_DIR}/*Doxyfile ) + foreach( _doxy_file IN LISTS _doxy_files ) + get_filename_component( _filename ${_doxy_file} NAME ) + add_custom_command( TARGET apidox PRE_BUILD + COMMAND doxygen ${_filename} + DEPENDS ${_doxy_file} + COMMENT "Doxyfile: ${_doxyfile}" + ) + endforeach() + + add_custom_target( install-apidox + COMMAND ${CMAKE_COMMAND} -E echo Apidox installed in ${APIDOX_HTML_DIR} + DEPENDS apidox + ) + + install( + DIRECTORY ${APIDOX_OUTPUT_DIR} + DESTINATION ${APIDOX_HTML_DIR}/ + ) + +endfunction( ) + +################################################# +##### ##### restore CMake policies cmake_policy( POP ) |