/
CMakeLists.txt
122 lines (106 loc) · 5.79 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
find_package(Doxygen)
if(DOXYGEN_FOUND)
IF (DOXYGEN_DOT_EXECUTABLE)
SET(HAVE_DOT YES)
ELSE (DOXYGEN_DOT_EXECUTABLE)
message(STATUS "Note: Doxygen docs will look better with graphviz's dot installed.")
SET(HAVE_DOT NO)
ENDIF (DOXYGEN_DOT_EXECUTABLE)
SET(DOXYGEN_LANGUAGE "English" CACHE STRING "Language used by doxygen")
MARK_AS_ADVANCED(DOXYGEN_LANGUAGE)
# note: this test is obsolete if DevDoc target is used
if (NOT BUILD_GUI)
message("Note: Gui is not built. Documentation may lack some parts.")
endif (NOT BUILD_GUI)
# directory order seems important for correct macro expansion
# (files containing macros definitions must be parsed before the files using them)
SET(DOXYGEN_SOURCE_DIR ${COIN3D_INCLUDE_DIRS}/Inventor/fields/SoSubField.h
${CMAKE_SOURCE_DIR}/src/CXX
${CMAKE_SOURCE_DIR}/src/zipios++
${CMAKE_SOURCE_DIR}/src/3rdParty
${CMAKE_SOURCE_DIR}/src/Build
${CMAKE_SOURCE_DIR}/src/Base
${CMAKE_BINARY_DIR}/src/Base
${CMAKE_SOURCE_DIR}/src/App
${CMAKE_BINARY_DIR}/src/App
${CMAKE_SOURCE_DIR}/src/Gui
${CMAKE_BINARY_DIR}/src/Gui
${CMAKE_SOURCE_DIR}/src/Mod
${CMAKE_BINARY_DIR}/src/Mod
${CMAKE_SOURCE_DIR}/src/Main
${CMAKE_SOURCE_DIR}/src/Doc
)
STRING(REGEX REPLACE ";" " " DOXYGEN_INPUT_LIST "${DOXYGEN_SOURCE_DIR}")
# exclude some subdirectories
# src/Tools : content not relevant ?
# src/3rdParty/CxImage : Windows thumbnailer
set( DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Tools)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/3rdParty/CxImage)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/3rdParty/salomesmesh)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Arch/Dice3DS)
# deprecated modules
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Assembly)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Cam)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Complete)
STRING(REGEX REPLACE ";" " " DOXYGEN_EXCLUDE_LIST "${DOXYGEN_EXCLUDE_DIR}")
SET(DOXYGEN_OUTPUT_DIR ${CMAKE_BINARY_DIR}/doc/SourceDocu)
SET(DOXYGEN_IMAGE_PATH ${CMAKE_SOURCE_DIR}/src/Gui/Icons)
SET(DOXYGEN_LAYOUT_FILE ${CMAKE_SOURCE_DIR}/src/Doc/FreecadDoxygenLayout.xml)
find_package(Coin3DDoc)
if( COIN3D_DOC_FOUND )
SET(DOXYGEN_TAGFILES
${COIN3D_DOC_TAGFILE}=${COIN3D_DOC_PATH}
)
endif( COIN3D_DOC_FOUND )
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/BuildDevDoc.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/BuildWebDoc.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/BuildWebDoc.cfg @ONLY)
if( FREECAD_MAINTAINERS_BUILD )
if (WIN32)
ADD_CUSTOM_TARGET(SourceDocu
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
COMMAND ${QT_HELPCOMPILER_EXECUTABLE} "\"${CMAKE_BINARY_DIR}/doc/SourceDocu/html/index.qhp\""
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/doc/SourceDocu/html/index.qch ${CMAKE_BINARY_DIR}/doc/FreeCADSource.qch
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
)
else(WIN32)
ADD_CUSTOM_TARGET(SourceDocu
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
COMMAND ${QT_HELPCOMPILER_EXECUTABLE} "${CMAKE_BINARY_DIR}/doc/SourceDocu/html/index.qhp"
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/doc/SourceDocu/html/index.qch ${CMAKE_BINARY_DIR}/doc/FreeCADSource.qch
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
)
endif(WIN32)
ADD_CUSTOM_TARGET(UserDocu
${PYTHON_EXECUTABLE}
${CMAKE_SOURCE_DIR}/src/Tools/wiki2qhelp.py
-c ${QT_HELPCOMPILER_EXECUTABLE}
-g ${QT_COLLECTIOMGENERATOR_EXECUTABLE}
-o ${CMAKE_BINARY_DIR}/doc
)
else( FREECAD_MAINTAINERS_BUILD )
# reconfigure to have all sources files generated from xml, whatever build options were
# generate source documentation
# delete CMakeCache to reset to default build options next time
ADD_CUSTOM_TARGET(DevDoc
${CMAKE_COMMAND} -D BUILD_GUI:BOOL=ON -D BUILD_FEM:BOOL=ON ${CMAKE_SOURCE_DIR}
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/CMakeCache.txt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
# lightweight version for the web
ADD_CUSTOM_TARGET(WebDoc
${CMAKE_COMMAND} -D BUILD_GUI:BOOL=ON -D BUILD_FEM:BOOL=ON ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/src/Doc/templates ${CMAKE_CURRENT_BINARY_DIR}/templates
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildWebDoc.cfg
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/CMakeCache.txt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
endif( FREECAD_MAINTAINERS_BUILD )
else( DOXYGEN_FOUND )
ADD_CUSTOM_TARGET(DevDoc
echo "Doxygen not found. Install it and rerun CMake")
endif( DOXYGEN_FOUND )