Skip to content

improve constexpr_switch #28

improve constexpr_switch

improve constexpr_switch #28

Workflow file for this run

name: Install
on:
push:
branches:
- master
- main
pull_request:
branches:
- master
- main
permissions: read-all
jobs:
header-only-ubuntu:
name: Header-only / Ubuntu
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Build and install header-only package
run: |
cmake -S . -B build-install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${RUNNER_TEMP}/configured-install" \
-DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF \
-DMAGIC_ENUM_OPT_BUILD_TESTS=OFF \
-DMAGIC_ENUM_OPT_VERIFY_INTERFACE_HEADER_SETS=ON
cmake --build build-install \
--target magic_enum_verify_interface_header_sets \
--parallel
cmake --install build-install --prefix "${RUNNER_TEMP}/magic_enum"
- name: Test installed CMake package
run: |
cmake -S . -B build-installed-cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="${RUNNER_TEMP}/magic_enum" \
-DMAGIC_ENUM_OPT_TEST_INSTALLED_VERSION=ON
cmake --build build-installed-cmake --parallel
ctest --test-dir build-installed-cmake --output-on-failure --no-tests=error
- name: Test installed pkg-config package
run: |
cmake -S . -B build-installed-pkgconfig \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="${RUNNER_TEMP}/magic_enum" \
-DMAGIC_ENUM_OPT_TEST_INSTALLED_VERSION_PKGCONFIG=ON
cmake --build build-installed-pkgconfig --parallel
ctest --test-dir build-installed-pkgconfig --output-on-failure --no-tests=error
module-macos-gcc:
name: Module / macOS / GCC 16 / fmt::fmt / C++20
runs-on: macos-15
env:
CC: gcc-16
CXX: g++-16
steps:
- uses: actions/checkout@v7
- name: Checkout fmt
uses: actions/checkout@v7
with:
repository: fmtlib/fmt
path: fmt-src
- name: Install GCC 16 and Ninja
env:
CC: clang
CXX: clang++
run: |
brew install gcc@16 ninja
echo "$(brew --prefix gcc@16)/bin" >> "${GITHUB_PATH}"
- name: Install fmt
run: |
python3 -m pip install cmake==4.4.0 --break-system-packages
cmake -S fmt-src -B build-fmt -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_COMPILER="${CXX}" \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_CXX_SCAN_FOR_MODULES=OFF \
-DCMAKE_INSTALL_PREFIX="${RUNNER_TEMP}/fmt" \
-DBUILD_SHARED_LIBS=OFF \
-DFMT_DOC=OFF \
-DFMT_MODULE=OFF \
-DFMT_TEST=OFF
cmake --build build-fmt --parallel
cmake --install build-fmt
- name: Build and test installed module package
run: |
fmt_prefix="${RUNNER_TEMP}/fmt"
cmake -S . -B build-module -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_CXX_EXTENSIONS=OFF \
-DCMAKE_PREFIX_PATH="${fmt_prefix}" \
-DMAGIC_ENUM_USE_MODULES=ON \
-DMAGIC_ENUM_MODULE_WITH_FMT=ON \
-DMAGIC_ENUM_OPT_BUILD_TESTS=ON \
-DMAGIC_ENUM_OPT_BUILD_EXAMPLES=ON
cmake --build build-module \
--parallel \
--target \
magic_enum_module \
example_module_usage \
test_module-cpp20 \
test_module_aliases-cpp20 \
test_module_wchar_t-cpp20
cmake --build build-module \
--target magic_enum_verify_interface_header_sets \
--parallel
ctest --test-dir build-module \
--output-on-failure \
--no-tests=error \
-R '^(test_module(_aliases|_wchar_t)?-cpp20|installed-module-consumer)$'
module-windows-msvc:
name: Module / Windows / VS 2026 / C++20
runs-on: windows-2025-vs2026
steps:
- uses: actions/checkout@v7
- uses: ilammy/msvc-dev-cmd@v1
- name: Install pinned CMake
shell: pwsh
run: python -m pip install cmake==4.3.4
- name: Build and test installed module package
shell: pwsh
run: |
cmake -S . -B build-module -G Ninja `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_CXX_STANDARD=20 `
-DCMAKE_CXX_STANDARD_REQUIRED=ON `
-DCMAKE_CXX_EXTENSIONS=OFF `
-DMAGIC_ENUM_USE_MODULES=ON `
-DMAGIC_ENUM_OPT_BUILD_TESTS=ON `
-DMAGIC_ENUM_OPT_BUILD_EXAMPLES=ON
cmake --build build-module --parallel --target `
magic_enum_module `
example_module_usage `
test_module-cpp20 `
test_module_aliases-cpp20 `
test_module_wchar_t-cpp20
cmake --build build-module --parallel --target magic_enum_verify_interface_header_sets
ctest --test-dir build-module --output-on-failure --no-tests=error -R '^(test_module(_aliases|_wchar_t)?-cpp20|installed-module-consumer)$'