Skip to content

Commit df7bb60

Browse files
committed
Add Doxyfile, update CMake, add CI for deployment
1 parent 448fcf2 commit df7bb60

File tree

4 files changed

+113
-0
lines changed

4 files changed

+113
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
cmake -S. -Bbuild -DBUILD_DOCS=True -DBUILD_TESTS=False -DBUILD_MEX=False
15+
cmake --build build --target docs
16+
17+
- name: Deploy
18+
uses: JamesIves/github-pages-deploy-action@v4
19+
with:
20+
branch: gh-pages
21+
folder: build/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" False)
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+
"${PROJECT_BINARY_DIR}/Doxyfile"
7+
COPYONLY
8+
)
9+
10+
file(READ "${PROJECT_BINARY_DIR}/Doxyfile" DOXYFILE_CONTENT)
11+
string(REPLACE "@PROJECT_NAME@" "${PROJECT_NAME}" DOXYFILE_CONTENT "${DOXYFILE_CONTENT}")
12+
string(REPLACE "@PROJECT_VERSION@" "${PROJECT_VERSION}" DOXYFILE_CONTENT "${DOXYFILE_CONTENT}")
13+
string(REPLACE "@PROJECT_SOURCE_DIR@" "${PROJECT_SOURCE_DIR}" DOXYFILE_CONTENT "${DOXYFILE_CONTENT}")
14+
string(REPLACE "@PROJECT_BINARY_DIR@" "${PROJECT_BINARY_DIR}" DOXYFILE_CONTENT "${DOXYFILE_CONTENT}")
15+
file(WRITE "${PROJECT_BINARY_DIR}/Doxyfile" "${DOXYFILE_CONTENT}")
16+
17+
add_custom_target(docs
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: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
DOXYFILE_ENCODING = UTF-8
2+
PROJECT_NAME = @PROJECT_NAME@
3+
PROJECT_NUMBER = @PROJECT_VERSION@
4+
OUTPUT_DIRECTORY = @PROJECT_BINARY_DIR@/docs/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+
SEARCHENGINE = YES
20+
DISABLE_INDEX = NO
21+
TREEVIEW_WIDTH = 300
22+
SEARCHDATA_FILE = searchdata.xml
23+
GENERATE_BUGLIST = YES
24+
GENERATE_DEPRECATEDLIST = YES
25+
ENABLED_SECTIONS += README
26+
INPUT = @PROJECT_SOURCE_DIR@/include/gemmi.hpp @PROJECT_SOURCE_DIR@/README.md
27+
INPUT_ENCODING = UTF-8
28+
FILE_PATTERNS = *.h *.hpp *.c *.cpp *.md
29+
USE_MDFILE_AS_MAINPAGE = @PROJECT_SOURCE_DIR@/README.md
30+
WARNINGS = YES
31+
WARN_IF_UNDOCUMENTED = YES
32+
WARN_IF_DOC_ERROR = YES
33+
WARN_NO_PARAMDOC = YES
34+
WARN_NO_RETURN = YES
35+
WARN_NO_EXCEPTION = YES
36+
WARN_IF_INLINE_RANKS = YES
37+
WARN_IF_INLINE_ORDINALS = YES
38+
WARN_IF_INCOMPLETE_DOCS = YES
39+
WARN_IF_MISSING_DOXYFILE = YES
40+
WARN_IF_CONDITIONAL_ELSE = YES
41+
WARN_IF_SYMBOL_UNDEFINED = YES
42+
WARN_IF_VERSION_MISSING = YES
43+
WARN_IF_USER_DEFINED_UNDEFINED= YES
44+
WARN_IF_UNKNOWN_COMMANDS = YES
45+
WARN_NESTED_CONDITIONALS = NO
46+
CHECK_INCLUDE_PATH = YES
47+
SHOW_USED_FILES = YES
48+
SHOW_FILES = YES
49+
SHOW_NAMESPACES = YES
50+
SHOW_INCLUDE_FILES = YES
51+
SHOW_GROUPED_MEMBERS = YES
52+
SHOW_MODULES = YES
53+
SHOW_LICENSE = YES
54+
SORT_MEMBER_DOCS = YES
55+
SORT_BRIEF_DOCS = NO
56+
SORT_MEMBERS_CTORS_1ST = NO
57+
SORT_GROUP_NAMES = NO
58+
SORT_MODULE_NAMES = NO
59+
SORT_SECTION_NAMES = NO
60+
SOURCE_BROWSER = YES
61+
LIST_SOURCE_CODE = YES
62+
VERBATIM_HEADERS = YES
63+
INLINE_INFO = YES

0 commit comments

Comments
 (0)