Skip to content

cmake options

cmake options #486

Workflow file for this run

name: build Ubuntu
on:
push:
pull_request:
branches:
- main
jobs:
build-ubuntu:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-20.04]
build_configuration:
########################################
- name: "default"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "ON"
ECAL_CORE_COMMAND_LINE: "ON"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "ON"
ECAL_CORE_TIMEPLUGIN: "ON"
ECAL_CORE_TRANSPORT_UDP: "ON"
ECAL_CORE_TRANSPORT_TCP: "ON"
ECAL_CORE_TRANSPORT_SHM: "ON"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "full"
########################################
ECAL_CORE_HAS_PROTOBUF: "ON"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "ON"
ECAL_CORE_COMMAND_LINE: "ON"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "ON"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "ON"
ECAL_CORE_TIMEPLUGIN: "ON"
ECAL_CORE_TRANSPORT_UDP: "ON"
ECAL_CORE_TRANSPORT_TCP: "ON"
ECAL_CORE_TRANSPORT_SHM: "ON"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "pubsub"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "ON"
ECAL_CORE_TRANSPORT_TCP: "ON"
ECAL_CORE_TRANSPORT_SHM: "ON"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "pubsub_proto"
########################################
ECAL_CORE_HAS_PROTOBUF: "ON"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "ON"
ECAL_CORE_TRANSPORT_TCP: "ON"
ECAL_CORE_TRANSPORT_SHM: "ON"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "pubsub_udp_only"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "OFF"
ECAL_CORE_REGISTRATION_SHM: "OFF"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "ON"
ECAL_CORE_TRANSPORT_TCP: "OFF"
ECAL_CORE_TRANSPORT_SHM: "OFF"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "pubsub_tcp_only"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "OFF"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "OFF"
ECAL_CORE_TRANSPORT_TCP: "ON"
ECAL_CORE_TRANSPORT_SHM: "OFF"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "pubsub_shm_only"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "OFF"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "ON"
ECAL_CORE_SUBSCRIBER: "ON"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "OFF"
ECAL_CORE_TRANSPORT_TCP: "OFF"
ECAL_CORE_TRANSPORT_SHM: "ON"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "client_server"
########################################
ECAL_CORE_HAS_PROTOBUF: "OFF"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "OFF"
ECAL_CORE_SUBSCRIBER: "OFF"
ECAL_CORE_SERVICE: "ON"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "OFF"
ECAL_CORE_TRANSPORT_TCP: "OFF"
ECAL_CORE_TRANSPORT_SHM: "OFF"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "client_server_proto"
########################################
ECAL_CORE_HAS_PROTOBUF: "ON"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "ON"
ECAL_CORE_MONITORING: "OFF"
ECAL_CORE_PUBLISHER: "OFF"
ECAL_CORE_SUBSCRIBER: "OFF"
ECAL_CORE_SERVICE: "ON"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "OFF"
ECAL_CORE_TRANSPORT_TCP: "OFF"
ECAL_CORE_TRANSPORT_SHM: "OFF"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
########################################
- name: "monitoring_only"
########################################
ECAL_CORE_HAS_PROTOBUF: "ON"
ECAL_CORE_BUILD_SAMPLES: "ON"
ECAL_CORE_BUILD_TESTS: "ON"
ECAL_CORE_CONFIGURATION: "OFF"
ECAL_CORE_COMMAND_LINE: "OFF"
ECAL_CORE_REGISTRATION: "ON"
ECAL_CORE_REGISTRATION_SHM: "OFF"
ECAL_CORE_MONITORING: "ON"
ECAL_CORE_PUBLISHER: "OFF"
ECAL_CORE_SUBSCRIBER: "OFF"
ECAL_CORE_SERVICE: "OFF"
ECAL_CORE_TIMEPLUGIN: "OFF"
ECAL_CORE_TRANSPORT_UDP: "OFF"
ECAL_CORE_TRANSPORT_TCP: "OFF"
ECAL_CORE_TRANSPORT_SHM: "OFF"
ECAL_CORE_NPCAP_SUPPORT: "OFF"
ECAL_THIRDPARTY_BUILD_PROTOBUF: "OFF"
BUILD_SHARED_LIBS: "OFF"
CMAKE_BUILD_TYPE: "Release"
runs-on: ${{ matrix.os }}
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt-get install ninja-build libprotobuf-dev libprotoc-dev protobuf-compiler
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- name: CMake
run: |
mkdir "${{ runner.workspace }}/_build"
cd "${{ runner.workspace }}/_build"
cmake $GITHUB_WORKSPACE -G "Ninja" \
-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=submodule_dependencies.cmake \
-DECAL_CORE_HAS_PROTOBUF=${{ matrix.build_configuration.ECAL_CORE_HAS_PROTOBUF }} \
-DECAL_CORE_BUILD_SAMPLES=${{ matrix.build_configuration.ECAL_CORE_BUILD_SAMPLES }} \
-DECAL_CORE_BUILD_TESTS=${{ matrix.build_configuration.ECAL_CORE_BUILD_TESTS }} \
-DECAL_CORE_CONFIGURATION=${{ matrix.build_configuration.ECAL_CORE_CONFIGURATION }} \
-DECAL_CORE_COMMAND_LINE=${{ matrix.build_configuration.ECAL_CORE_COMMAND_LINE }} \
-DECAL_CORE_REGISTRATION=${{ matrix.build_configuration.ECAL_CORE_REGISTRATION }} \
-DECAL_CORE_REGISTRATION_SHM=${{ matrix.build_configuration.ECAL_CORE_REGISTRATION_SHM }} \
-DECAL_CORE_MONITORING=${{ matrix.build_configuration.ECAL_CORE_MONITORING }} \
-DECAL_CORE_PUBLISHER=${{ matrix.build_configuration.ECAL_CORE_PUBLISHER }} \
-DECAL_CORE_SUBSCRIBER=${{ matrix.build_configuration.ECAL_CORE_SUBSCRIBER }} \
-DECAL_CORE_SERVICE=${{ matrix.build_configuration.ECAL_CORE_SERVICE }} \
-DECAL_CORE_TIMEPLUGIN=${{ matrix.build_configuration.ECAL_CORE_TIMEPLUGIN }} \
-DECAL_CORE_TRANSPORT_UDP=${{ matrix.build_configuration.ECAL_CORE_TRANSPORT_UDP }} \
-DECAL_CORE_TRANSPORT_TCP=${{ matrix.build_configuration.ECAL_CORE_TRANSPORT_TCP }} \
-DECAL_CORE_TRANSPORT_SHM=${{ matrix.build_configuration.ECAL_CORE_TRANSPORT_SHM }} \
-DECAL_CORE_NPCAP_SUPPORT=${{ matrix.build_configuration.ECAL_CORE_NPCAP_SUPPORT }} \
-DECAL_THIRDPARTY_BUILD_PROTOBUF=${{ matrix.build_configuration.ECAL_THIRDPARTY_BUILD_PROTOBUF }} \
-DBUILD_SHARED_LIBS=${{ matrix.build_configuration.BUILD_SHARED_LIBS }} \
-DCMAKE_BUILD_TYPE=${{ matrix.build_configuration.CMAKE_BUILD_TYPE }} \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
-DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu
shell: bash
- name: Build Release
run: cmake --build . --config Release
working-directory: ${{ runner.workspace }}/_build
- name: Run Tests
run: ctest -V
working-directory: ${{ runner.workspace }}/_build
# - name: Pack
# run: cpack -C Release
# working-directory: ${{ runner.workspace }}/_build
# - name: Upload Debian
# uses: actions/upload-artifact@v3
# with:
# name: ubuntu-debian
# path: ${{ runner.workspace }}/_build/_package/*.deb