Skip to content

add example

add example #111

Workflow file for this run

name: Build and run Tests
on: [ push ]
concurrency:
group: build-and-run-tests-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-run-tests:
strategy:
fail-fast: false
matrix:
config:
- os: ubuntu-22.04
compiler: clang-15
- os: ubuntu-22.04
compiler: clang-16
- os: ubuntu-22.04
compiler: clang-17
- os: ubuntu-22.04
compiler: gcc-12
- os: ubuntu-22.04
compiler: gcc-13
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.compiler }})
defaults:
run:
shell: bash
steps:
- name: Add repos for for gcc-13 and clang-16
run: |
# gcc-13
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
source /etc/os-release
# clang-16
echo "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-16 main" | sudo tee /etc/apt/sources.list.d/llvm-16.list
curl https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/llvm-16.gpg > /dev/null
# clang-17
echo "deb http://apt.llvm.org/${UBUNTU_CODENAME}/ llvm-toolchain-${UBUNTU_CODENAME}-17 main" | sudo tee /etc/apt/sources.list.d/llvm-17.list
curl https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/llvm-17.gpg > /dev/null
sudo apt-get update -y
- name: Install CMake
uses: lukka/get-cmake@latest
with:
cmakeVersion: 3.27.7
- name: Install compiler
id: install_cc
uses: rlalik/[email protected]
with:
compiler: ${{ matrix.config.compiler }}
- uses: actions/checkout@v4
- name: Install conan
shell: bash
env:
CC: ${{ steps.install_cc.outputs.cc }}
CXX: ${{ steps.install_cc.outputs.cxx }}
run: |
pip3 install "conan==1.62.0"
conan profile new --detect default
conan profile update env.CXX="${CXX}" default
conan profile update env.CC="${CC}" default
conan profile update settings.compiler.libcxx=libstdc++11 default
- name: Cache conan data
id: cache-conan
uses: actions/cache@v4
with:
path: ~/.conan/data
key: tests-${{ matrix.config.os }}-${{ matrix.config.compiler }}-conan
- name: Configure CMake
run: cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=On -DBUILD_EXAMPLES=On -DUSE_CONAN=On -G Ninja -B build .
env:
CC: ${{ steps.install_cc.outputs.cc }}
CXX: ${{ steps.install_cc.outputs.cxx }}
- name: Build tests and examples
working-directory: build
run: cmake --build . --parallel 2
- name: Run tests
working-directory: build
run: ctest --verbose --parallel 2
- name: Run examples
working-directory: build
run: |
for example in examples/examples_*; do
echo "executing ${example}"
./${example}
done