Skip to content

Commit 44520bb

Browse files
committed
Cleanup cmake files
1 parent 28e070e commit 44520bb

10 files changed

Lines changed: 360 additions & 456 deletions

File tree

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@ jobs:
1818
# ── Linux / GCC 14 ──
1919
- os: ubuntu-24.04
2020
compiler: gcc-14
21-
preset: ci-gcc
21+
preset: dev-gcc
2222

2323
# ── Linux / Clang 18 ──
2424
- os: ubuntu-24.04
2525
compiler: clang-18+libc++
26-
preset: ci-clang-libcxx
26+
preset: dev-clang-libcxx
2727

2828
# ── macOS 15 / AppleClang 16 ──
2929
- os: macos-15
3030
compiler: apple-clang-16
31-
preset: ci-apple-clang
31+
preset: dev-clang
3232

3333
# ── Windows 2022 / MSVC (Ninja Multi-Config) ──
3434
- os: windows-2022
3535
compiler: msvc
36-
preset: ci-msvc
36+
preset: dev-msvc
3737

3838
steps:
3939
- uses: actions/checkout@v5
@@ -61,7 +61,7 @@ jobs:
6161
run: cmake --preset ${{ matrix.preset }}
6262

6363
- name: Build
64-
run: cmake --build --preset ${{ matrix.preset }}
64+
run: cmake --build --preset ${{ matrix.preset }}-debug
6565

6666
- name: Test
67-
run: ctest --preset ${{ matrix.preset }}
67+
run: ctest --preset ${{ matrix.preset }}-debug

CMakeLists.txt

Lines changed: 69 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,110 @@
1+
# Eggs.KeyedSet
2+
#
13
# Copyright Agustin K-ballo Berge, Fusion Fenix 2026
24
#
35
# Distributed under the Boost Software License, Version 1.0. (See accompanying
46
# file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
57

6-
cmake_minimum_required(VERSION 3.24...3.31)
8+
cmake_minimum_required(VERSION 3.25...4.2.3)
79

8-
project(Eggs.KeyedSet CXX)
10+
project(Eggs.KeyedSet DESCRIPTION "A C++23 keyed-set container" LANGUAGES CXX)
911

10-
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
12+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
1113

12-
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
14+
include(GNUInstallDirs)
1315

1416
# Options (two spellings: short when top-level, prefixed when a subdirectory)
1517
if(PROJECT_IS_TOP_LEVEL)
16-
include(CTest) # option(BUILD_TESTING ...)
17-
option(BUILD_EXAMPLE "Build the example" ON)
18-
option(ENABLE_INSTALL "Enable installing the library" ON)
18+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
19+
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
20+
21+
option(BUILD_EXAMPLES "Build the examples" ON)
22+
include(CTest) # option(BUILD_TESTING ...)
23+
option(ENABLE_INSTALL "Generate install rules" ON)
24+
set(SYSTEM OFF)
1925
else()
26+
option(EGGS_KEYED_SET_BUILD_EXAMPLES "Build the examples" OFF)
2027
option(EGGS_KEYED_SET_BUILD_TESTING "Build the testing tree" OFF)
21-
option(EGGS_KEYED_SET_BUILD_EXAMPLE "Build the example" OFF)
22-
option(EGGS_KEYED_SET_ENABLE_INSTALL "Enable installing the library" OFF)
28+
option(EGGS_KEYED_SET_ENABLE_INSTALL "Generate install rules" OFF)
2329

2430
# Map prefixed options back to the canonical names used below
25-
if(EGGS_KEYED_SET_BUILD_TESTING)
26-
set(BUILD_TESTING ON)
27-
endif()
28-
if(EGGS_KEYED_SET_BUILD_EXAMPLE)
29-
set(BUILD_EXAMPLE ON)
30-
endif()
31-
if(EGGS_KEYED_SET_ENABLE_INSTALL)
32-
set(ENABLE_INSTALL ON)
33-
endif()
31+
set(BUILD_EXAMPLES ${EGGS_KEYED_SET_BUILD_EXAMPLES})
32+
set(BUILD_TESTING ${EGGS_KEYED_SET_BUILD_TESTING})
33+
set(ENABLE_INSTALL ${EGGS_KEYED_SET_ENABLE_INSTALL})
34+
set(SYSTEM ON)
3435
endif()
3536

36-
# Library target (header-only INTERFACE library)
37+
#
38+
# Library target — header-only INTERFACE library.
39+
# Internal name _eggs_keyed_set; downstream CMake code uses the alias Eggs::KeyedSet.
40+
#
3741
add_library(_eggs_keyed_set INTERFACE)
38-
target_include_directories(_eggs_keyed_set INTERFACE
39-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
40-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
41-
target_compile_features(_eggs_keyed_set INTERFACE cxx_std_23)
42-
target_sources(_eggs_keyed_set INTERFACE
43-
FILE_SET HEADERS
44-
BASE_DIRS include
45-
FILES include/eggs/keyed_set.hpp)
46-
set_target_properties(_eggs_keyed_set
42+
target_sources(
43+
_eggs_keyed_set
44+
INTERFACE
45+
FILE_SET HEADERS BASE_DIRS include FILES include/eggs/keyed_set.hpp
46+
)
47+
set_target_properties(
48+
_eggs_keyed_set
4749
PROPERTIES
48-
EXPORT_NAME Eggs::KeyedSet
49-
VERIFY_INTERFACE_HEADER_SETS ${BUILD_TESTING})
50+
EXPORT_NAME KeyedSet
51+
SYSTEM ${SYSTEM}
52+
VERIFY_INTERFACE_HEADER_SETS ${BUILD_TESTING}
53+
)
54+
target_compile_features(_eggs_keyed_set INTERFACE cxx_std_23)
5055

5156
add_library(Eggs::KeyedSet ALIAS _eggs_keyed_set)
5257

53-
# Example
54-
if(BUILD_EXAMPLE)
58+
#
59+
# Examples
60+
#
61+
if(BUILD_EXAMPLES)
5562
add_subdirectory(example)
5663
endif()
5764

58-
# Test
65+
#
66+
# Test suite
67+
#
5968
if(BUILD_TESTING)
6069
enable_testing()
6170
add_subdirectory(test)
6271
endif()
6372

64-
# Install
73+
#
74+
# Install rules
75+
#
6576
if(ENABLE_INSTALL)
66-
include(GNUInstallDirs)
6777
include(CMakePackageConfigHelpers)
6878

69-
install(TARGETS _eggs_keyed_set EXPORT _targets
70-
FILE_SET HEADERS)
71-
install(EXPORT _targets
79+
install(
80+
TARGETS _eggs_keyed_set
81+
EXPORT EggsKeyedSetTargets
82+
FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
83+
)
84+
85+
install(
86+
EXPORT EggsKeyedSetTargets
7287
NAMESPACE Eggs::
73-
FILE EggsKeyedSetTargets.cmake
74-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.KeyedSet)
88+
FILE eggs.keyedset-targets.cmake
89+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/eggs.keyedset
90+
)
7591

7692
configure_package_config_file(
77-
${CMAKE_CURRENT_SOURCE_DIR}/cmake/EggsKeyedSetConfig.cmake.in
78-
${CMAKE_CURRENT_BINARY_DIR}/EggsKeyedSetConfig.cmake
79-
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.KeyedSet)
93+
cmake/eggs.keyedset-config.cmake.in
94+
${CMAKE_CURRENT_BINARY_DIR}/eggs.keyedset-config.cmake
95+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/eggs.keyedset
96+
)
8097

8198
write_basic_package_version_file(
82-
${CMAKE_CURRENT_BINARY_DIR}/EggsKeyedSetConfigVersion.cmake
99+
${CMAKE_CURRENT_BINARY_DIR}/eggs.keyedset-config-version.cmake
83100
VERSION 1.0.0
84-
COMPATIBILITY SameMajorVersion)
101+
COMPATIBILITY SameMajorVersion
102+
)
85103

86-
install(FILES
87-
${CMAKE_CURRENT_BINARY_DIR}/EggsKeyedSetConfig.cmake
88-
${CMAKE_CURRENT_BINARY_DIR}/EggsKeyedSetConfigVersion.cmake
89-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.KeyedSet)
104+
install(
105+
FILES
106+
${CMAKE_CURRENT_BINARY_DIR}/eggs.keyedset-config.cmake
107+
${CMAKE_CURRENT_BINARY_DIR}/eggs.keyedset-config-version.cmake
108+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/eggs.keyedset
109+
)
90110
endif()

0 commit comments

Comments
 (0)