Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: CMake + Conan (GCC 10)

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move BUILD_TYPE, CXX and C from ENV to the cmake configuration step.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, but I'm thinking about env matrix, if it applicable to this case 🤔

CC: gcc-10
CXX: g++-10

jobs:
build:
# 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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest switching to Fedora. Ubuntu LTS has very outdated GCC and Clang versions.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, but I'm thinking on compromise decision: make an Ubuntu 22.04, Fedora-latest and some another Windows/macos CI workloads


steps:
- uses: actions/checkout@v3

# Install conan
- name: Get Conan
uses: turtlebrowser/get-conan@v1.0

# Install dependencies in the same build folder as will be used in CMake. This path also will be used for CMake's find_package() mode
# via CMAKE_MODULE_PATH and CMAKE_PREFIX_PATH.
- name: Install dependencies
run: conan install . --build=missing -if ${{github.workspace}}/build -s build_type=${{env.BUILD_TYPE}}

- 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
# Also set PREFIX and MODULE paths for find_package() via CMAKE_MODULE_PATH and CMAKE_PREFIX_PATH variables.
# See https://cmake.org/cmake/help/latest/command/find_package.html?highlight=find_package for search modes.
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_PREFIX_PATH=${{github.workspace}}/build -DCMAKE_MODULE_PATH=${{github.workspace}}/build

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- 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}}