|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- # Author Yann Renard / INRIA
- # Date 2008-10-15
- #
- # this CMake script iterates over several source documentation directories in
- # order to compile it with doxygen. It has the ability to configure the
- # doxyfile depending on some variables and to build documentation sources from
- # computer generated templates (.dox-skeleton) and hand written documentation
- # parts (.dox-part)
-
- ADD_CUSTOM_TARGET(${PROJECT_NAME} ALL)
-
- # look for doxygen, if not present, no need to generate documentation
- FIND_PROGRAM(doxygen_bin "doxygen" PATHS ${LIST_DEPENDENCIES_PATH}/bin NO_DEFAULT_PATH)
- FIND_PROGRAM(doxygen_bin "doxygen" PATHS ${LIST_DEPENDENCIES_PATH}/bin "C:/Program Files/doxygen/bin")
-
- IF(doxygen_bin)
-
- MESSAGE(STATUS " Found doxygen...")
-
- # intializes the variable that will be used in the doxyfile for input
- # directories
- STRING(REPLACE "\\" "/" ov_doxy_input "${OV_BASE_DIR}/cmake-modules")
- SET(ov_doxy_input "\\\"${ov_doxy_input}\\\"")
-
- # intializes the variable that will contain the list of resource files to
- # copy to the target directory
- SET(RESOURCE_FILES "")
-
- SET(DOX_PART_FILES "")
- # iterates on each project we have
- #
- # for each project, we look at its resources and store them in a list
- # for each project, we look at partial documentation files (.dox-part) and
- # parse them to get |ov[a-zA-Z0-9_]*_begin| or |ov[a-zA-Z0-9_]*_end|
- # tokens. This tokens will later be included in the skeleton doxumentation
- # files (.dox-skeleton)
- GET_PROPERTY(CURRENT_PROJECTS GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS)
-
- FOREACH(current_project ${CURRENT_PROJECTS})
- # MESSAGE(STATUS " [ OK ] Project ${current_project}")
-
- STRING(REGEX REPLACE " +$" "" current_project ${current_project})
-
- # updates the doxyfile variable for input directories
- IF(EXISTS "${current_project}/include")
- SET(current_project_include "${current_project}/include")
- SET(ov_doxy_input "${ov_doxy_input} \\\"${current_project_include}\\\"")
- ENDIF(EXISTS "${current_project}/include")
-
- IF(EXISTS "${current_project}/src")
- # MESSAGE(STATUS " [ OK ] Candidate src directory found ${current_project_src}")
- SET(current_project_src "${current_project}/src")
- SET(ov_doxy_input "${ov_doxy_input} \\\"${current_project_src}\\\"")
- ENDIF(EXISTS "${current_project}/src")
-
- IF(EXISTS "${current_project}/doc")
- # MESSAGE(STATUS " [ OK ] Candidate doc directory found ${current_project_doc}")
- SET(current_project_doc "${current_project}/doc")
- SET(ov_doxy_input "${ov_doxy_input} \\\"${current_project_doc}\\\"")
-
- # looks for resources and stores them in a list
- FILE(GLOB_RECURSE resource_files_tmp "${current_project_doc}/*.png" "${current_project_doc}/*.svg" "${current_project_doc}/*.css" "${current_project_doc}/*.php")
- SET(RESOURCE_FILES ${RESOURCE_FILES} ${resource_files_tmp})
-
- # looks for partial hand written documentation
- FILE(GLOB_RECURSE doxs "${current_project_doc}/*.dox-part")
- SET(DOX_PART_FILES "${DOX_PART_FILES};${doxs}")
- ENDIF(EXISTS "${current_project}/doc")
-
- IF(EXISTS "${current_project}/box-algorithm-doc")
-
- LIST(APPEND dir_list "." "box-algorithm-doc/dox-part")
- FOREACH(file_path ${dir_list})
- SET(current_project_doc "${current_project}/${file_path}")
- MESSAGE(STATUS " [ OK ] Candidate doc directory found ${current_project_doc}")
- SET(ov_doxy_input "${ov_doxy_input} \\\"${current_project_doc}\\\"")
-
- # looks for resources and stores them in a list
- FILE(GLOB_RECURSE resource_files_tmp "${current_project_doc}/*.png" "${current_project_doc}/*.svg" "${current_project_doc}/*.css" "${current_project_doc}/*.php")
- SET(RESOURCE_FILES ${RESOURCE_FILES} ${resource_files_tmp})
-
- # looks for partial hand written documentation
- FILE(GLOB_RECURSE doxs "${current_project_doc}/*.dox-part")
- SET(DOX_PART_FILES "${DOX_PART_FILES};${doxs}")
- ENDFOREACH(file_path ${dir_list})
-
- ENDIF(EXISTS "${current_project}/box-algorithm-doc")
-
-
-
- ENDFOREACH(current_project)
-
- # the final doxyfile filename is generated, platform compliantly
- SET(ov_doxy_final "${CMAKE_CURRENT_BINARY_DIR}/doxyfile")
- IF(WIN32)
- STRING(REPLACE "/" "\\\\" ov_doxy_final ${ov_doxy_final})
- ENDIF(WIN32)
-
- # these two lines configure the variables used to configure the doxyfile
- SET(ov_doxy_input "${ov_doxy_input} \\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"")
- SET(ov_doxy_input "${ov_doxy_input} \\\"${CMAKE_CURRENT_BINARY_DIR}\\\"")
- SET(ov_doxy_strip_from_path ${ov_doxy_input})
- SET(ov_doxy_version ${PROJECT_VERSION})
-
- # then the doxyfile is configured
-
- GET_PROPERTY(CURRENT_PROJECTS GLOBAL PROPERTY OV_PROP_CURRENT_PROJECTS_BUILD_DIR)
- FOREACH(current_project ${CURRENT_PROJECTS})
- # MESSAGE(STATUS "DUH ${current_project}")
- STRING(REGEX REPLACE " +$" "" current_project ${current_project})
- SET(current_project_src "${current_project}/src")
- # updates the doxyfile variable for input directories
- SET(ov_plugin_inspector_load_path "${ov_plugin_inspector_load_path}:${current_project}")
- ENDFOREACH(current_project)
-
- # create folder to put the output from doxygen to
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../doc")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../doc/html")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/algorithm-doc")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/algorithm-snapshots")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/box-algorithm-doc")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/box-algorithm-snapshots")
- # then the doxyfile is configured
-
- CONFIGURE_FILE(
- CreateDoxygen.cmake-skeleton
- CreateDoxygen.cmake
- @ONLY)
-
- CONFIGURE_FILE(
- openvibe.dox-base
- openvibe.dox
- @ONLY)
-
- IF(WIN32)
- ADD_CUSTOM_COMMAND(
- TARGET ${PROJECT_NAME}
- POST_BUILD
- COMMAND ${LIST_DEPENDENCIES_PATH}/cmake/bin/cmake.exe -P CreateDoxygen.cmake
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
- )
- ELSEIF(UNIX)
- ADD_CUSTOM_COMMAND(
- TARGET ${PROJECT_NAME}
- POST_BUILD
- COMMAND cmake -P CreateDoxygen.cmake
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
- )
- ENDIF(WIN32)
-
- INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../doc/" DESTINATION ${DIST_DOCDIR})
-
- ELSE(doxygen_bin)
-
- MESSAGE(STATUS " FAILED to find doxygen...")
-
- ENDIF(doxygen_bin)
-
-
|