0032694: Documentation, Draw Harness Guide - update ViewerTest commands
[occt.git] / dox / CMakeLists.txt
1 project (Overview)
2
3 # directory that contains all raw OCCT overview articles (markdown format)
4 set (OCCT_OVERVIEW_DIR "${CMAKE_SOURCE_DIR}/dox")
5
6 # directory that contains resources for the generation of OCCT documentation
7 set (OCCT_OVERVIEW_RESOURCE_DIR "${OCCT_OVERVIEW_DIR}/resources")
8
9 # directory that contains all generated OCCT articles
10 set (OCCT_GENERATED_DOC_DIR "${CMAKE_BINARY_DIR}/doc")
11 if (NOT EXISTS "${OCCT_GENERATED_DOC_DIR}")
12   file (MAKE_DIRECTORY "${OCCT_GENERATED_DOC_DIR}")
13 endif()
14
15 # directory that contains generated OCCT overview articles
16 set (OCCT_GENERATED_OVERVIEW_DIR "${OCCT_GENERATED_DOC_DIR}/overview")
17 if (NOT EXISTS "${OCCT_GENERATED_OVERVIEW_DIR}")
18   file (MAKE_DIRECTORY "${OCCT_GENERATED_OVERVIEW_DIR}")
19 endif()
20
21 # directory that contains generated OCCT overview articles in html format
22 set (OCCT_GENERATED_HTML_OVERVIEW_DIR "${OCCT_GENERATED_OVERVIEW_DIR}/html")
23 if (NOT EXISTS "${OCCT_GENERATED_HTML_OVERVIEW_DIR}")
24   file (MAKE_DIRECTORY "${OCCT_GENERATED_HTML_OVERVIEW_DIR}")
25 endif()
26
27 # read OCCT articles that should be generated
28 set (OCCT_ARTICLES "")
29 if (EXISTS "${OCCT_OVERVIEW_DIR}/FILES_HTML.txt" )
30   file (STRINGS "${OCCT_OVERVIEW_DIR}/FILES_HTML.txt" OCCT_ARTICLES REGEX "^[^#]+")
31 else()
32   message (FATAL_ERROR "FILES_HTML.txt is not found in ${OCCT_OVERVIEW_DIR}")
33 endif()
34
35 # configuration file for doxygen
36 set (OCCT_CONFIG_FOR_DOXYGEN "${OCCT_GENERATED_DOC_DIR}/occt.cfg")
37
38 set (3RDPARTY_MATHJAX_RELATIVE_PATH "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1")
39
40 configure_file ("${OCCT_OVERVIEW_RESOURCE_DIR}/occt_ug_html.doxyfile" "${OCCT_CONFIG_FOR_DOXYGEN}" COPYONLY)
41
42 # Add common options for generation of Overview and User Guides
43 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nPROJECT_NUMBER         = ${OCC_VERSION_STRING_EXT}")
44 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nOUTPUT_DIRECTORY       = ${OCCT_GENERATED_OVERVIEW_DIR}/.")
45 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nPROJECT_LOGO           = ${OCCT_OVERVIEW_DIR}/resources/occ_logo.png")
46 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nEXAMPLE_PATH           = ${CMAKE_SOURCE_DIR}/src")
47
48 set (OCCT_ARTICLE_PARAM_INPUT     "INPUT                  =")
49 set (OCCT_ARTICLE_PARAM_IMAGEPATH "IMAGE_PATH             = ${OCCT_OVERVIEW_DIR}/resources/ ")
50
51 set (OCCT_ARTICLES_ABSPATH "")
52 foreach (OCCT_ARTICLE ${OCCT_ARTICLES})
53   get_filename_component (OCCT_ARTICLE_ABSOLUTE_PATH "${OCCT_OVERVIEW_DIR}/${OCCT_ARTICLE}" ABSOLUTE)
54   get_filename_component (OCCT_ARTICLE_PARENT_DIR "${OCCT_ARTICLE_ABSOLUTE_PATH}" PATH)
55
56   if (EXISTS "${OCCT_ARTICLE_PARENT_DIR}/images")
57     set (OCCT_ARTICLE_PARAM_IMAGEPATH "${OCCT_ARTICLE_PARAM_IMAGEPATH} ${OCCT_ARTICLE_PARENT_DIR}/images")
58   endif()
59
60   set (OCCT_ARTICLE_PARAM_INPUT "${OCCT_ARTICLE_PARAM_INPUT} ${OCCT_ARTICLE_ABSOLUTE_PATH}")
61
62   set (SOURCE_GROUP_NAME "")
63
64   # add the file to appropriate source group
65   get_filename_component (CURRENT_TAIL_PATH "${OCCT_ARTICLE}" PATH)
66   while (CURRENT_TAIL_PATH AND NOT "${CURRENT_TAIL_PATH}" STREQUAL "..")
67     get_filename_component (CURRENT_DIR_NAME "${CURRENT_TAIL_PATH}" NAME)
68     set (SOURCE_GROUP_NAME "${CURRENT_DIR_NAME}\\${SOURCE_GROUP_NAME}")
69
70     # one step out (get parent directory)
71     get_filename_component (CURRENT_TAIL_PATH "${CURRENT_TAIL_PATH}" PATH)
72   endwhile()
73   SOURCE_GROUP ("${SOURCE_GROUP_NAME}" FILES ${OCCT_ARTICLE_ABSOLUTE_PATH})
74
75   list (APPEND OCCT_ARTICLES_ABSPATH ${OCCT_ARTICLE_ABSOLUTE_PATH})
76 endforeach()
77
78 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\n${OCCT_ARTICLE_PARAM_INPUT}")
79 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\n${OCCT_ARTICLE_PARAM_IMAGEPATH}")
80
81 # Add document type-specific options
82 # generate tree view
83 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nGENERATE_TREEVIEW      = YES")
84
85 # HTML Search engine options
86 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nSEARCHENGINE           = YES")
87 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nSERVER_BASED_SEARCH    = YES")
88 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nEXTERNAL_SEARCH        = NO")
89
90 # Formula options
91 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nMATHJAX_RELPATH        = ${3RDPARTY_MATHJAX_RELATIVE_PATH}")
92
93 # If MSVC is used as build system, change warning format to the one recognized by MSVC
94 if (MSVC)
95   file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nWARN_FORMAT            = \"$file($line): $text\"")
96 endif()
97
98 # Avoid Doxygen parsing messages in the build log
99 file (APPEND ${OCCT_CONFIG_FOR_DOXYGEN} "\nQUIET                  = YES")
100
101 # Copy index file to provide fast access to HTML documentation
102 file(COPY "${OCCT_OVERVIEW_RESOURCE_DIR}/index.html" DESTINATION "${OCCT_GENERATED_OVERVIEW_DIR}")
103
104 # get relative paths to documentation source files
105 file (GLOB_RECURSE OCCT_OVERVIEW_FILES "${OCCT_OVERVIEW_DIR}/*")
106
107 add_custom_command(OUTPUT "${OCCT_GENERATED_DOC_DIR}/overview/html/occt_logo.png"
108   COMMAND ${3RDPARTY_DOXYGEN_EXECUTABLE} ${OCCT_CONFIG_FOR_DOXYGEN}
109   DEPENDS ${OCCT_OVERVIEW_FILES}
110   WORKING_DIRECTORY ${OCCT_GENERATED_DOC_DIR}
111   COMMENT "Generating OCCT overview documentation with Doxygen"
112   VERBATIM
113 )
114
115 add_custom_target(${PROJECT_NAME} ALL
116   DEPENDS "${OCCT_GENERATED_DOC_DIR}/overview/html/occt_logo.png" ${OCCT_OVERVIEW_FILES}
117   SOURCES ${OCCT_ARTICLES_ABSPATH}
118   VERBATIM
119 )
120
121 # Create Documentation folder in solution view
122 set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "Documentation")