Skip to content

Commit 783ecc3

Browse files
committed
add docs to cmake build
1 parent a986d7a commit 783ecc3

File tree

1 file changed

+54
-4
lines changed

1 file changed

+54
-4
lines changed

GekkoLib/CMakeLists.txt

+54-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
1010

1111
# Option to build both shared and static libraries
1212
option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)
13+
option(BUILD_DOCS "Build documentation" OFF)
1314

1415
if(MSVC)
1516
# Visual Studio specific flags
@@ -28,7 +29,6 @@ option(NO_ASIO_BUILD "Exclude ASIO from the build" OFF)
2829

2930
# Include directories for your project headers
3031
include_directories(${PROJECT_SOURCE_DIR}/include)
31-
3232
# Include directories for third-party header-only libraries
3333
include_directories(${PROJECT_SOURCE_DIR}/thirdparty)
3434
include_directories(${PROJECT_SOURCE_DIR}/thirdparty/asio)
@@ -49,7 +49,6 @@ set(SRC_FILES
4949
# Shared libraries
5050
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
5151
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
52-
5352
# Static libraries
5453
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/out)
5554

@@ -58,11 +57,9 @@ add_library(GekkoNet ${SRC_FILES})
5857

5958
# Set the output names conditionally based on used options
6059
set(TARGET_SUFFIX "")
61-
6260
if(NOT BUILD_SHARED_LIBS)
6361
set(TARGET_SUFFIX "${TARGET_SUFFIX}_STATIC")
6462
endif()
65-
6663
if(NO_ASIO_BUILD)
6764
set(TARGET_SUFFIX "${TARGET_SUFFIX}_NO_ASIO")
6865
endif()
@@ -79,4 +76,57 @@ endif()
7976

8077
if(NO_ASIO_BUILD)
8178
target_compile_definitions(GekkoNet PRIVATE GEKKONET_NO_ASIO)
79+
endif()
80+
81+
# Documentation configuration
82+
if(BUILD_DOCS)
83+
find_package(Doxygen
84+
REQUIRED dot
85+
OPTIONAL_COMPONENTS mscgen dia)
86+
87+
# Get all header files
88+
file(GLOB_RECURSE HEADER_FILES
89+
${PROJECT_SOURCE_DIR}/include/*.h
90+
)
91+
92+
# Combine sources and headers for documentation
93+
set(DOXYGEN_INPUT_FILES
94+
${SRC_FILES}
95+
${HEADER_FILES}
96+
${PROJECT_SOURCE_DIR}/README.md
97+
)
98+
99+
# Configure Doxygen settings
100+
set(DOXYGEN_PROJECT_NAME "GekkoNet")
101+
set(DOXYGEN_PROJECT_VERSION ${PROJECT_VERSION})
102+
set(DOXYGEN_PROJECT_BRIEF "C/C++ Peer to Peer Game Networking SDK")
103+
set(DOXYGEN_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs)
104+
set(DOXYGEN_GENERATE_HTML YES)
105+
set(DOXYGEN_GENERATE_TREEVIEW YES)
106+
set(DOXYGEN_EXTRACT_ALL YES)
107+
set(DOXYGEN_EXTRACT_PRIVATE YES)
108+
set(DOXYGEN_EXTRACT_STATIC YES)
109+
set(DOXYGEN_RECURSIVE YES)
110+
set(DOXYGEN_SOURCE_BROWSER YES)
111+
set(DOXYGEN_GENERATE_LATEX NO)
112+
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "README.md")
113+
set(DOXYGEN_COLLABORATION_GRAPH YES)
114+
set(DOXYGEN_CLASS_GRAPH YES)
115+
set(DOXYGEN_CALL_GRAPH YES)
116+
set(DOXYGEN_CALLER_GRAPH YES)
117+
set(DOXYGEN_HIDE_UNDOC_RELATIONS NO)
118+
119+
# Add custom settings for networking library
120+
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
121+
set(DOXYGEN_EXTRACT_LOCAL_CLASSES YES)
122+
set(DOXYGEN_SHOW_INCLUDE_FILES YES)
123+
set(DOXYGEN_GENERATE_TODOLIST YES)
124+
set(DOXYGEN_WARNINGS YES)
125+
set(DOXYGEN_WARN_IF_UNDOCUMENTED YES)
126+
127+
# Generate documentation
128+
doxygen_add_docs(docs
129+
${DOXYGEN_INPUT_FILES}
130+
COMMENT "Generating API documentation with Doxygen"
131+
)
82132
endif()

0 commit comments

Comments
 (0)