Skip to content

cmake: rework cpp.cmake #7

cmake: rework cpp.cmake

cmake: rework cpp.cmake #7

# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake
on: [push, pull_request, workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
matrix:
cmake: [
{name: "Make", generator: "Unix Makefiles", config: Release},
{name: "Ninja", generator: "Ninja", config: Release},
{name: "NinjaMulti", generator: "Ninja Multi-Config", config: Release},
]
python: [
#{version: '3.9'},
#{version: '3.10'},
#{version: '3.11'},
{version: '3.12'},
{version: '3.13'},
]
fail-fast: false
name: amd64•Linux•${{matrix.cmake.name}}•Py${{matrix.python.version}}
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_deps_src
deps_build_key: amd64_linux_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_linux_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v5
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{matrix.python.version}}
- name: Check Python
run: |
python --version
python -m platform
- name: Install Dependencies
run: sudo apt install -y ninja-build ccache
# CONFIGURING CACHES
- name: Cache CMake dependency source code
uses: actions/cache@v4
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Cache CMake dependency build
uses: actions/cache@v4
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Cache CCache
uses: actions/cache@v4
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: |
${{env.ccache_key}}-${{github.sha}}
${{env.ccache_key}}
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
-DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config ${{matrix.cmake.config}}
--target test
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target install
-v
- name: CCache stats and cleanup
run: |
ccache --show-stats
ccache --zero-stats
amd64_linux_cmake:
runs-on: ubuntu-latest
needs: native
steps:
- uses: actions/checkout@v5