@@ -19,39 +19,73 @@ jobs:
19
19
build :
20
20
runs-on : ${{ matrix.os }}
21
21
strategy :
22
+ fail-fast : false
22
23
matrix :
23
24
os : [ubuntu-22.04, ubuntu-24.04, macos-latest]
24
25
compiler : [gcc, clang]
26
+ generator : [Ninja, Unix Makefiles]
27
+ cmake_version : [default]
25
28
exclude :
26
29
- os : macos-latest
27
30
compiler : gcc
28
-
31
+ include :
32
+ - os : ubuntu-24.04
33
+ cmake_version : 3.28.3
34
+ generator : Unix Makefiles
35
+ compiler : gcc
36
+ - os : ubuntu-24.04
37
+ cmake_version : 3.28.3
38
+ generator : Ninja
39
+ compiler : gcc
40
+ # - os: ubuntu-24.04
41
+ # cmake_version: 3.29.2
42
+
29
43
steps :
30
44
- name : Checkout code
31
45
uses : actions/checkout@v4
32
46
33
- - name : Install CMake, lcov, gfortran on Linux
47
+ - name : Install lcov, compilers on Linux
34
48
if : runner.os == 'Linux'
35
49
run : |
36
50
sudo apt-get update
37
- sudo apt-get install -y cmake lcov gfortran
51
+ sudo apt-get install -y lcov gfortran ${{ matrix.compiler }}
52
+
53
+ - name : Install default CMake
54
+ if : runner.os == 'Linux' && matrix.cmake_version == 'default'
55
+ run : |
56
+ sudo apt-get update
57
+ sudo apt-get install -y cmake
58
+
59
+ - name : Install specific CMake version
60
+ if : runner.os == 'Linux' && matrix.cmake_version != 'default'
61
+ run : |
62
+ sudo apt-get update
63
+ sudo apt-get install -y wget
64
+ wget https://github.com/Kitware/CMake/releases/download/v${{ matrix.cmake_version }}/cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz
65
+ tar -xzf cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz
66
+ sudo cp -r cmake-${{ matrix.cmake_version }}-linux-x86_64/* /usr/local/
38
67
39
68
- name : Install CMake, lcov on macOS
40
69
if : runner.os == 'macOS'
41
70
run : |
42
71
brew update
43
72
brew install cmake lcov
44
73
74
+ - name : Print CMake version
75
+ run : cmake --version
76
+
45
77
- name : Configure and build
46
78
run : |
47
- mkdir build && cd build
48
- cmake .. -DENABLE_COVERAGE=On
49
- make
50
- make gcov lcov test
51
-
52
- - name : lcov report
53
- uses : actions/upload-artifact@v4
54
- with :
55
- name : code-coverage-report
56
- path : ./build/lcov
79
+ mkdir build
80
+ cmake -S . -B build -DCMAKE_C_COMPILER="${{ matrix.compiler }}" -G "${{ matrix.generator }}" -DENABLE_COVERAGE=On
81
+ cmake --build build
82
+ cmake --build build --target test
83
+ cmake --build build --target gcov
84
+ cmake --build build --target lcov
57
85
86
+ # - name: Codecov upload
87
+ # uses: codecov/codecov-action@v5
88
+ # with:
89
+ # name: codecov-coverage
90
+ # token: ${{ secrets.CODECOV_TOKEN }}
91
+ # fail_ci_if_error: true
0 commit comments