mirror of
https://github.com/threeal/cmake-action.git
synced 2025-04-22 11:31:21 +00:00
87 lines
2.7 KiB
YAML
87 lines
2.7 KiB
YAML
name: CMake Action
|
|
description: Configure and build a CMake project
|
|
author: Alfi Maulana
|
|
branding:
|
|
color: gray-dark
|
|
icon: terminal
|
|
inputs:
|
|
source-dir:
|
|
description: Source directory of the CMake project
|
|
required: false
|
|
default: .
|
|
build-dir:
|
|
description: Build directory of the CMake project
|
|
required: false
|
|
default: build
|
|
targets:
|
|
description: List of build targets
|
|
required: false
|
|
generator:
|
|
description: Build system generator of the CMake project
|
|
required: false
|
|
c-compiler:
|
|
description: Preferred executable for compiling C language files
|
|
required: false
|
|
cxx-compiler:
|
|
description: Preferred executable for compiling C++ language files
|
|
required: false
|
|
c-flags:
|
|
description: Additional flags passed when compiling C language files
|
|
required: false
|
|
cxx-flags:
|
|
description: Additional flags passed when compiling C++ language files
|
|
required: false
|
|
args:
|
|
description: Additional arguments passed during the CMake configuration
|
|
required: false
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Process inputs
|
|
id: process_inputs
|
|
shell: bash
|
|
run: |
|
|
ARGS="${{ inputs.source-dir }} -B ${{ inputs.build-dir }}"
|
|
BUILD_ARGS="--build ${{ inputs.build-dir }}"
|
|
if [ -n '${{ inputs.targets }}' ]; then
|
|
BUILD_ARGS="$BUILD_ARGS --target ${{ inputs.targets }}"
|
|
fi
|
|
if [ -n '${{ inputs.generator }}' ]; then
|
|
ARGS="$ARGS -G ${{ inputs.generator }}"
|
|
fi
|
|
if [ -n '${{ inputs.c-compiler }}' ]; then
|
|
ARGS="$ARGS -D CMAKE_C_COMPILER=${{ inputs.c-compiler }}"
|
|
fi
|
|
if [ -n '${{ inputs.cxx-compiler }}' ]; then
|
|
ARGS="$ARGS -D CMAKE_CXX_COMPILER=${{ inputs.cxx-compiler }}"
|
|
fi
|
|
if [ -n '${{ inputs.c-flags }}' ]; then
|
|
ARGS="$ARGS -D CMAKE_C_FLAGS=${{ inputs.c-flags }}"
|
|
fi
|
|
if [ -n '${{ inputs.cxx-flags }}' ]; then
|
|
ARGS="$ARGS -D CMAKE_CXX_FLAGS=${{ inputs.cxx-flags }}"
|
|
fi
|
|
if [ -n '${{ inputs.args }}' ]; then
|
|
ARGS="$ARGS ${{ inputs.args }}"
|
|
fi
|
|
echo "cmake_args=${ARGS//[$'\t\r\n']}" >> $GITHUB_OUTPUT
|
|
echo "cmake_build_args=${BUILD_ARGS//[$'\t\r\n']}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Install Ninja
|
|
if: ${{ inputs.generator == 'Ninja' }}
|
|
shell: bash
|
|
run: |
|
|
case "$OSTYPE" in
|
|
darwin*) brew install ninja ;;
|
|
linux*) sudo apt install -y ninja-build ;;
|
|
*) choco install ninja ;;
|
|
esac
|
|
|
|
- name: Configure CMake
|
|
shell: bash
|
|
run: cmake ${{ steps.process_inputs.outputs.cmake_args }}
|
|
|
|
- name: Build targets
|
|
shell: bash
|
|
run: cmake ${{ steps.process_inputs.outputs.cmake_build_args }}
|