diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a408a9dfe..0360a0ba3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,9 @@ on: branches: [ master ] workflow_dispatch: permissions: read-all +defaults: + run: + shell: bash jobs: cmake-build: strategy: @@ -26,29 +29,58 @@ jobs: YAML_CPP_BUILD_TESTS: 'ON' CMAKE_GENERATOR: >- ${{format(matrix.generator != 'Default Generator' && '-G "{0}"' || '', matrix.generator)}} + CMAKE_INSTALL_PREFIX: "${{ github.workspace }}/install-prefix" + CMAKE_BUILD_TYPE: Debug runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - name: Get number of CPU cores - uses: SimenB/github-actions-cpu-cores@v1 + - name: Configure + run: | + cmake \ + ${{ env.CMAKE_GENERATOR }} \ + -S "${{ github.workspace }}" \ + -B build \ + -D CMAKE_INSTALL_PREFIX="${{ env.CMAKE_INSTALL_PREFIX }}" \ + -D CMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} \ + -D YAML_BUILD_SHARED_LIBS=${{ env.YAML_BUILD_SHARED_LIBS }} \ + -D YAML_CPP_BUILD_TESTS=${{ env.YAML_CPP_BUILD_TESTS }} - name: Build - shell: bash - run: | - cmake ${{ env.CMAKE_GENERATOR }} -S "${{ github.workspace }}" -B build -DYAML_BUILD_SHARED_LIBS=${{ env.YAML_BUILD_SHARED_LIBS }} - cd build && cmake --build . --parallel ${{ steps.cpu-cores.outputs.count }} - - - name: Build Tests - shell: bash run: | - cmake ${{ env.CMAKE_GENERATOR }} -S "${{ github.workspace }}" -B build -DYAML_BUILD_SHARED_LIBS=${{ env.YAML_BUILD_SHARED_LIBS }} -DYAML_CPP_BUILD_TESTS=${{ env.YAML_CPP_BUILD_TESTS }} - cd build && cmake --build . --parallel ${{ steps.cpu-cores.outputs.count }} + cmake \ + --build build \ + --config ${{ env.CMAKE_BUILD_TYPE }} \ + --verbose \ + --parallel - name: Run Tests shell: bash run: | - cd build && ctest -C Debug --output-on-failure --verbose + ctest \ + --test-dir build \ + --build-config ${{ env.CMAKE_BUILD_TYPE }} \ + --output-on-failure \ + --verbose + + - name: Install + run: cmake --install build --config ${{ env.CMAKE_BUILD_TYPE }} + + - name: Configure CMake package test + run: | + cmake \ + ${{ env.CMAKE_GENERATOR }} \ + -S "${{ github.workspace }}/test/cmake" \ + -B consumer-build \ + -D CMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} \ + -D CMAKE_PREFIX_PATH="${{ env.CMAKE_INSTALL_PREFIX }}" + + - name: Build CMake package test + run: | + cmake \ + --build consumer-build \ + --config ${{ env.CMAKE_BUILD_TYPE }} \ + --verbose bazel-build: strategy: @@ -56,16 +88,14 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Build - shell: bash run: | cd "${{ github.workspace }}" bazel build :all - name: Test - shell: bash run: | cd "${{ github.workspace }}" bazel test test diff --git a/test/cmake/CMakeLists.txt b/test/cmake/CMakeLists.txt new file mode 100644 index 000000000..19a7910ae --- /dev/null +++ b/test/cmake/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.5) +project(yaml-cpp-consumer LANGUAGES CXX) + +find_package(yaml-cpp CONFIG REQUIRED) +get_target_property(LIBRARY_TYPE yaml-cpp::yaml-cpp TYPE) + +if(LIBRARY_TYPE STREQUAL "SHARED_LIBRARY") + if(NOT YAML_CPP_SHARED_LIBS_BUILT) + message(FATAL_ERROR "Library type (${LIBRARY_TYPE}) contradicts config: ${YAML_CPP_SHARED_LIBS_BUILT}") + endif() +else() + if(YAML_CPP_SHARED_LIBS_BUILT) + message(FATAL_ERROR "Library type (${LIBRARY_TYPE}) contradicts config: ${YAML_CPP_SHARED_LIBS_BUILT}") + endif() +endif() + +add_executable(main main.cpp) +set_target_properties(main PROPERTIES CXX_STANDARD 11) +target_link_libraries(main PRIVATE ${YAML_CPP_LIBRARIES}) diff --git a/test/cmake/main.cpp b/test/cmake/main.cpp new file mode 100644 index 000000000..bce9ea62c --- /dev/null +++ b/test/cmake/main.cpp @@ -0,0 +1,3 @@ +#include "yaml-cpp/yaml.h" + +int main(int, char**) { YAML::Parser foo{}; }