diff --git a/.github/workflows/cmake.yaml b/.github/workflows/cmake.yaml index 413f168..6f791ad 100644 --- a/.github/workflows/cmake.yaml +++ b/.github/workflows/cmake.yaml @@ -1,4 +1,4 @@ -name: CMake +name: Build and test (cmake based build) on: push: @@ -15,24 +15,42 @@ jobs: # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. # You can convert this to a matrix build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v3 - name: Prepare dependencies - run: sudo apt-get update && sudo apt-get install -yq libboost-system-dev libboost-date-time-dev cmake graphviz doxygen + run: | + if [ "$RUNNER_OS" == "Linux" ]; then + sudo apt-get update && \ + sudo apt-get install -yq \ + libboost-system-dev \ + libboost-date-time-dev \ + cmake \ + graphviz doxygen + elif [ "$RUNNER_OS" == "Windows" ]; then + choco install boost-msvc-14.3 graphviz doxygen.install + elif [ "$RUNNER_OS" == "macOS" ]; then + brew install boost graphviz doxygen + else + echo "$RUNNER_OS not supported" + exit 1 + fi + shell: bash - name: Configure CMake - # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. - # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - + run: cmake -B build + shell: bash - name: Build # Build your program with the given configuration - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + run: cmake --build build --config ${{env.BUILD_TYPE}} + shell: bash - name: Test working-directory: ${{github.workspace}}/build # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest -C ${{env.BUILD_TYPE}} - diff --git a/.github/workflows/doxygen-gh-pages.yml b/.github/workflows/doxygen-gh-pages.yml new file mode 100644 index 0000000..6645b0c --- /dev/null +++ b/.github/workflows/doxygen-gh-pages.yml @@ -0,0 +1,29 @@ +name: Deploy Doxygen results to Github Pages + +on: + push: + branches: + - main + +permissions: + contents: write +jobs: + build-and-deploy: + concurrency: ci-${{ github.ref }} # Recommended if you intend to make multiple deployments in quick succession. + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v3 + - name: Prepare dependencies + run: sudo apt-get update && sudo apt-get install -yq libboost-system-dev libboost-date-time-dev cmake graphviz doxygen + - name: configure + run: cmake -B build -S . -DEXPATPP_BUILD_DOCS=ON + - name: clean generated docs dir + run: rm -rf build/html + - name: build + run: cmake --build build --target doc + + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: build/html # The folder the action should deploy. diff --git a/CMakeLists.txt b/CMakeLists.txt index 9316382..0866fb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ if(POLICY CMP0077) endif() if (MSVC) - add_compile_options(/W4 /WX) + add_compile_options(/W4) else() add_compile_options(-Wall -Wextra -pedantic) endif()