Skip to content

Commit ecad900

Browse files
committed
Add Doxyfile and update CMake configuration
1 parent 1f9e011 commit ecad900

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Documentation
2+
on:
3+
push:
4+
jobs:
5+
build-and-deploy:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/setup-python@v5
9+
- uses: actions/checkout@master
10+
11+
- name: Install and Build
12+
run: |
13+
sudo apt install -y doxygen graphviz python3-sphinx python3-breathe python3-sphinx-rtd-theme python3-breathe python3-exhale python3-myst-parser
14+
make docs
15+
16+
- name: Deploy
17+
uses: JamesIves/github-pages-deploy-action@v4
18+
with:
19+
branch: gh-pages # The branch the action should deploy to.
20+
folder: docs/html

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ if (BUILD_MEX)
2828
add_subdirectory("mex")
2929
endif()
3030

31+
# Build documentation.
32+
option(BUILD_DOCS "Build documentation" True)
33+
if (BUILD_DOCS)
34+
add_subdirectory("docs")
35+
endif()
36+
3137
# Build tests and check coverage, if required.
3238
option(CHECK_COVERAGE "Check test coverage" False)
3339
option(BUILD_TESTS "Run Catch2 tests" False)

docs/CMakeLists.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
find_package(Doxygen REQUIRED)
2+
3+
if(DOXYGEN_FOUND)
4+
configure_file(
5+
"${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in"
6+
"${CMAKE_BINARY_DIR}/Doxyfile"
7+
COPYONLY
8+
)
9+
10+
file(READ "${CMAKE_BINARY_DIR}/Doxyfile" DOXYFILE_CONTENT)
11+
string(REPLACE "@PROJECT_NAME@" "${PROJECT_NAME}" DOXYFILE_CONTENT)
12+
string(REPLACE "@PROJECT_VERSION@" "${PROJECT_VERSION}" DOXYFILE_CONTENT)
13+
string(REPLACE "@CMAKE_SOURCE_DIR@" "${CMAKE_SOURCE_DIR}/.." DOXYFILE_CONTENT)
14+
string(REPLACE "@CMAKE_BINARY_DIR@" "${CMAKE_BINARY_DIR}/.." DOXYFILE_CONTENT)
15+
file(WRITE "${CMAKE_BINARY_DIR}/Doxyfile" "${DOXYFILE_CONTENT}")
16+
17+
add_custom_target(doc
18+
COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/Doxyfile"
19+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.." # Set working directory to the project root
20+
COMMENT "Generating documentation with Doxygen"
21+
VERBATIM
22+
)
23+
endif()

docs/Doxyfile.in

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
DOXYFILE_ENCODING = UTF-8
2+
PROJECT_NAME = @PROJECT_NAME@
3+
PROJECT_NUMBER = @PROJECT_VERSION@
4+
OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc/html
5+
CREATE_SUBDIRS = YES
6+
OUTPUT_LANGUAGE = English
7+
BRIEF_MEMBER_DESC = YES
8+
REPEAT_BRIEF = YES
9+
MARKDOWN_SUPPORT = YES
10+
TOC_INCLUDE_HEADINGS = 3
11+
AUTOLINK_SUPPORT = YES
12+
BUILTIN_STL_SUPPORT = YES
13+
GENERATE_TREEVIEW = YES
14+
ENUM_VALUES_PER_LINE = 4
15+
GENERATE_HTML = YES
16+
HTML_OUTPUT = html
17+
HTML_FILE_EXTENSION = .html
18+
HTML_COLORSTYLE = LIGHT
19+
HTML_TIMESTAMP = YES
20+
GENERATE_SEARCH = YES
21+
SEARCHENGINE = YES
22+
DISABLE_INDEX = NO
23+
TREEVIEW_WIDTH = 300
24+
EXT_SEARCH_ENGINE = NO
25+
SEARCHDATA_FILE = searchdata.xml
26+
GENERATE_BUGLIST = YES
27+
GENERATE_TODO = YES
28+
GENERATE_DEPRECATEDLIST = YES
29+
ENABLED_SECTIONS + = README
30+
INPUT = @CMAKE_SOURCE_DIR@/src/gemmi.cpp @CMAKE_SOURCE_DIR@/README.md
31+
INPUT_ENCODING = UTF-8
32+
FILE_PATTERNS = *.h *.hpp *.c *.cpp *.md
33+
USE_MDFILE_AS_MAINPAGE = @CMAKE_SOURCE_DIR@/README.md
34+
WARNINGS = YES
35+
WARN_IF_UNDOCUMENTED = YES
36+
WARN_IF_DOC_ERROR = YES
37+
WARN_NO_PARAMDOC = YES
38+
WARN_NO_RETURN = YES
39+
WARN_NO_EXCEPTION = YES
40+
WARN_IF_INLINE_RANKS = YES
41+
WARN_IF_INLINE_ORDINALS = YES
42+
WARN_IF_INCOMPLETE_DOCS = YES
43+
WARN_IF_MISSING_DOXYFILE = YES
44+
WARN_IF_CONDITIONAL_ELSE = YES
45+
WARN_IF_SYMBOL_UNDEFINED = YES
46+
WARN_IF_VERSION_MISSING = YES
47+
WARN_IF_USER_DEFINED_UNDEFINED= YES
48+
WARN_IF_UNKNOWN_COMMANDS = YES
49+
WARN_NESTED_CONDITIONALS = NO
50+
CHECK_INCLUDE_PATH = YES
51+
SHOW_USED_FILES = YES
52+
SHOW_FILES = YES
53+
SHOW_NAMESPACES = YES
54+
SHOW_INCLUDE_FILES = YES
55+
SHOW_GROUPED_MEMBERS = YES
56+
SHOW_MODULES = YES
57+
SHOW_LICENSE = YES
58+
SORT_MEMBER_DOCS = YES
59+
SORT_BRIEF_DOCS = NO
60+
SORT_MEMBERS_CTORS_1ST = NO
61+
SORT_GROUP_NAMES = NO
62+
SORT_MODULE_NAMES = NO
63+
SORT_SECTION_NAMES = NO
64+
SOURCE_BROWSER = YES
65+
LIST_SOURCE_CODE = YES
66+
VERBATIM_HEADERS = YES
67+
INLINE_INFO = YES

0 commit comments

Comments
 (0)