Skip to content

Commit 66cc80e

Browse files
GreisbyChristophe Greisberger
andauthored
Add BUILD_DOC cmake option (#159)
Co-authored-by: Christophe Greisberger <christophe@greisberger.fr>
1 parent 5c8c120 commit 66cc80e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

CMakeLists.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cmake_minimum_required(VERSION 3.5)
22
project(trantor)
33

4+
option(BUILD_DOC "Build Doxygen documentation" OFF)
5+
46
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules/)
57

68
set(TRANTOR_MAJOR_VERSION 1)
@@ -258,3 +260,36 @@ install(EXPORT TrantorTargets
258260
DESTINATION "${INSTALL_TRANTOR_CMAKE_DIR}"
259261
NAMESPACE Trantor::
260262
COMPONENT dev)
263+
264+
# Doxygen documentation
265+
find_package(Doxygen OPTIONAL_COMPONENTS dot dia)
266+
if(DOXYGEN_FOUND)
267+
set(DOXYGEN_PROJECT_BRIEF "Non-blocking I/O cross-platform TCP network library, using C++14")
268+
set(DOXYGEN_OUTPUT_DIRECTORY docs/${PROJECT_NAME})
269+
set(DOXYGEN_GENERATE_LATEX NO)
270+
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
271+
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE README.md)
272+
set(DOXYGEN_STRIP_FROM_INC_PATH ${PROJECT_SOURCE_DIR}
273+
${CMAKE_CURRENT_BINARY_DIR}/exports)
274+
if (WIN32)
275+
set(DOXYGEN_PREDEFINED _WIN32)
276+
endif(WIN32)
277+
doxygen_add_docs(doc_${PROJECT_NAME}
278+
README.md
279+
ChangeLog.md
280+
${public_net_headers}
281+
${public_utils_headers}
282+
COMMENT "Generate documentation")
283+
if(NOT TARGET doc)
284+
add_custom_target(doc)
285+
endif()
286+
add_dependencies(doc doc_${PROJECT_NAME})
287+
if (BUILD_DOC)
288+
add_dependencies(${PROJECT_NAME} doc_${PROJECT_NAME})
289+
# Don't install twice, so limit to Debug (assume developer)
290+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs/${PROJECT_NAME}
291+
TYPE DOC
292+
CONFIGURATIONS Debug)
293+
endif(BUILD_DOC)
294+
endif(DOXYGEN_FOUND)
295+

0 commit comments

Comments
 (0)