@@ -218,6 +218,86 @@ jobs:
218218 ctest --list-presets
219219 ctest --preset ${{ matrix.cmake-preset }}
220220
221+ test-on-clang :
222+ strategy :
223+ fail-fast : false
224+
225+ matrix :
226+ clang-version : [11, 14, 18, 22]
227+ cppstd : ['17', '20', '23']
228+ build-type : [Debug, Release]
229+ exclude :
230+ - clang-version : 11
231+ cppstd : ' 23'
232+ include :
233+ - build-type : Debug
234+ cmake-preset : conan-debug
235+ - build-type : Release
236+ cmake-preset : conan-release
237+
238+ name : Clang ${{ matrix.clang-version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }}
239+
240+ runs-on : ubuntu-22.04
241+
242+ env :
243+ CC : clang-${{ matrix.clang-version }}
244+ CXX : clang++-${{ matrix.clang-version }}
245+
246+ steps :
247+ - uses : actions/checkout@v4
248+
249+ - name : Install Clang
250+ uses : egor-tensin/setup-clang@v2
251+ with :
252+ version : ${{ matrix.clang-version }}
253+ cc : 0
254+
255+ - name : Check Clang Version
256+ shell : bash
257+ run : |
258+ "$CC" --version
259+ compiler_major="$("$CC" -dM -E -x c /dev/null | awk '$2 == "__clang_major__" {print $3}')"
260+ [[ "$compiler_major" == "${{ matrix.clang-version }}" ]]
261+
262+ - name : Install Conan
263+ uses : turtlebrowser/get-conan@main
264+
265+ - name : Setup Conan
266+ run : |
267+ conan --version
268+ conan profile detect --force
269+ conan profile show -pr default --format=json |
270+ jq -e --arg version "${{ matrix.clang-version }}" '
271+ .host.settings.compiler == "clang"
272+ and .host.settings["compiler.version"] == $version
273+ and .host.settings["compiler.libcxx"] == "libstdc++11"
274+ '
275+
276+ - name : Install CMake
277+ uses : lukka/get-cmake@latest
278+
279+ - name : Install dependencies
280+ run : >
281+ conan install .
282+ -s compiler.cppstd=${{ matrix.cppstd }}
283+ -s build_type=${{ matrix.build-type }}
284+ -b missing
285+
286+ - name : CMake Configure
287+ run : |
288+ cmake --list-presets
289+ cmake --preset ${{ matrix.cmake-preset }}
290+
291+ - name : Build
292+ run : |
293+ cmake --build --list-presets
294+ cmake --build --preset ${{ matrix.cmake-preset }}
295+
296+ - name : Test
297+ run : |
298+ ctest --list-presets
299+ ctest --preset ${{ matrix.cmake-preset }}
300+
221301 test-on-old-gcc :
222302 strategy :
223303 fail-fast : false
0 commit comments