Skip to content

Commit 16fc66e

Browse files
committed
build: use file set feature to declare headers
1 parent 7dda6c1 commit 16fc66e

5 files changed

Lines changed: 18 additions & 8 deletions

File tree

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
-D ENABLE_FORTIFY_SOURCE:BOOL=${{ matrix.build.type != 'Debug' }}
101101
102102
- name: Build
103-
run: uv run cmake --build --preset ${{ matrix.build.preset }}
103+
run: uv run cmake --build --preset ${{ matrix.build.preset }} --target all all_verify_interface_header_sets
104104

105105
- name: Run tests
106106
run: uv run ctest --preset ${{ matrix.build.preset }}
@@ -188,7 +188,7 @@ jobs:
188188
-D ENABLE_FORTIFY_SOURCE:BOOL=${{ matrix.build.type != 'Debug' }}
189189
190190
- name: Build
191-
run: uv run cmake --build --preset ${{ matrix.build.preset }}
191+
run: uv run cmake --build --preset ${{ matrix.build.preset }} --target all all_verify_interface_header_sets
192192

193193
- name: Run tests
194194
run: uv run ctest --preset ${{ matrix.build.preset }}
@@ -273,7 +273,7 @@ jobs:
273273
- name: Build
274274
run: >
275275
build/${{ matrix.build.Type }}/generators/conanbuild.ps1 &&
276-
uv run cmake --build --preset ${{ matrix.build.preset }}
276+
uv run cmake --build --preset ${{ matrix.build.preset }} --target all all_verify_interface_header_sets
277277
278278
- name: Run tests
279279
if: matrix.build.type != 'Debug'
@@ -346,7 +346,7 @@ jobs:
346346
run: uv run cmake --preset ${{ matrix.build.preset }}
347347

348348
- name: Build
349-
run: uv run cmake --build --preset ${{ matrix.build.preset }}
349+
run: uv run cmake --build --preset ${{ matrix.build.preset }} --target all all_verify_interface_header_sets
350350

351351
- name: Perform CodeQL Analysis
352352
uses: github/codeql-action/analyze@v4

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 4.1 FATAL_ERROR)
1+
cmake_minimum_required(VERSION 4.2 FATAL_ERROR)
22

33
project(
44
cpp-project-template

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ cmake --preset <preset> \
8080
# build
8181
cmake --build --preset <preset>
8282

83+
# to make sure your library headers are self-contained
84+
cmake --build --preset <preset> --target all_verify_interface_header_sets
85+
8386
# run tests
8487
ctest --preset <preset>
8588

@@ -121,6 +124,9 @@ cmake --preset <preset> \
121124
# build
122125
cmake --build --preset <preset>
123126
127+
# to make sure your library headers are self-contained
128+
cmake --build --preset <preset> --target all_verify_interface_header_sets
129+
124130
# run tests and collect test coverage (Windows)
125131
OpenCppCoverage.exe --export_type cobertura:coverage.xml --cover_children -- ctest --preset <preset>
126132
```

cmake/defaults.cmake

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,20 @@ endif()
1616
option(ENABLE_HARDENINGS "Enable hardenings" OFF)
1717

1818
# Useful CMake defaults
19+
set(CMAKE_ERROR_DEPRECATED ON)
1920
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
2021
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
2122
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
2223
set(CMAKE_C_EXTENSIONS OFF)
2324
set(CMAKE_CXX_EXTENSIONS OFF)
2425
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
26+
set(CMAKE_VERIFY_INTERFACE_HEADER_SETS ON)
27+
# TODO: set(CMAKE_VERIFY_PRIVATE_HEADER_SETS ON) with cmake 4.3
2528
set(CMAKE_LINK_WHAT_YOU_USE TRUE)
2629
set(CMAKE_VS_JUST_MY_CODE_DEBUGGING ON)
2730
set(CMAKE_COLOR_DIAGNOSTICS ON)
2831
set(CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE PRE_TEST)
29-
set(CMAKE_CTEST_ARGUMENTS --progress --output-on-failure)
30-
list(APPEND CMAKE_CTEST_ARGUMENTS --parallel)
32+
set(CMAKE_CTEST_ARGUMENTS --progress --output-on-failure --parallel)
3133

3234
# Set a default build type if none was specified
3335
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
@@ -65,6 +67,7 @@ if(ENABLE_CPPCHECK)
6567
${CPPCHECK}
6668
-v
6769
--enable=all
70+
--disable=unusedFunction
6871
--inline-suppr
6972
--error-exitcode=42
7073
--checkers-report=${CMAKE_BINARY_DIR}/cppcheck.report

lib/math/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
project(math)
22

33
add_library(${PROJECT_NAME} INTERFACE)
4-
target_include_directories(${PROJECT_NAME} INTERFACE include)
4+
target_sources(${PROJECT_NAME} INTERFACE FILE_SET HEADERS BASE_DIRS include
5+
FILES include/math/math.hpp)

0 commit comments

Comments
 (0)