Skip to content

Commit 7d2ce20

Browse files
Merge pull request #5768 from hannes-steffenhagen-diffblue/cmake/fix-doxygen
Fix doxygen in cmake
2 parents 4820ec3 + b480661 commit 7d2ce20

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

.github/workflows/pull-request-checks.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
# user input
7171
DEBIAN_FRONTEND: noninteractive
7272
run: |
73-
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils dpkg-dev ccache
73+
sudo apt-get install --no-install-recommends -yq cmake ninja-build gcc g++ maven flex bison libxml2-utils dpkg-dev ccache doxygen
7474
- name: Prepare ccache
7575
uses: actions/cache@v2
7676
with:
@@ -88,6 +88,10 @@ jobs:
8888
mkdir build
8989
cd build
9090
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
91+
- name: Check that doc task works
92+
run: |
93+
cd build
94+
ninja doc
9195
- name: Zero ccache stats and limit in size
9296
run: ccache -z --max-size=500M
9397
- name: Build with Ninja

src/CMakeLists.txt

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,26 @@ find_package(FLEX REQUIRED)
55

66
find_package(Doxygen)
77
if(DOXYGEN_FOUND)
8-
add_custom_target(doc
9-
"${DOXYGEN_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg"
10-
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
11-
)
8+
set(ROOT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
9+
set(ROOT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
10+
set(ORIGINAL_DOXYFILE "${CMAKE_CURRENT_SOURCE_DIR}/doxyfile")
11+
set(CONFIGURED_DOXYFILE "${ROOT_BINARY_DIR}/doxyfile")
12+
set(DOC_INPUT_DIRECTORY "${ROOT_SOURCE_DIR}/doc")
13+
set(DOC_OUTPUT_DIRECTORY "${ROOT_BINARY_DIR}/doc")
14+
15+
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doxyfile.override.in" "${CONFIGURED_DOXYFILE}")
16+
add_custom_target(doc
17+
COMMAND "${CMAKE_COMMAND}" -E remove_directory "${DOC_OUTPUT_DIRECTORY}"
18+
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${DOC_INPUT_DIRECTORY}" "${DOC_OUTPUT_DIRECTORY}"
19+
COMMAND "${DOXYGEN_EXECUTABLE}" "${CONFIGURED_DOXYFILE}"
20+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
21+
22+
unset(DOC_OUTPUT_DIRECTORY)
23+
unset(DOC_INPUT_DIRECTORY)
24+
unset(CONFIGURED_DOXYFILE)
25+
unset(ORIGINAL_DOXYFILE)
26+
unset(ROOT_SOURCE_DIR)
27+
unset(ROOT_BINARY_DIR)
1228
endif(DOXYGEN_FOUND)
1329

1430
# Add a bison target named 'parser'.

src/doxyfile.override.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Overrides for cmake out of source builds specifically, we
2+
# want to avoid copying files into the main doc directory,
3+
# instead we should be generating the doxygen docs in our
4+
# cmake output directory
5+
6+
# Note: This file is intended to be used with cmake
7+
# configure_file; variables like @this@ are replaced by
8+
# cmake variables.
9+
10+
@INCLUDE = @ORIGINAL_DOXYFILE@
11+
12+
OUTPUT_DIRECTORY = @DOC_OUTPUT_DIRECTORY@

0 commit comments

Comments
 (0)