Skip to content

egor-tensin/build-boost

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Boost

Test Boost.Python

This GitHub action downloads & builds Boost libraries in your workflow run.

  • Downloads a distribution of the specified Boost version and unpacks it.
  • Builds the required libraries using the specified toolset.

Use it in your workflow like this:

- name: Build Boost
  id: boost
  uses: egor-tensin/build-boost@v1
  with:
    version: 1.71.0
    libraries: filesystem program_options system
    platform: x64
    configuration: Release

- name: Show paths
  run: |
    printf 'Boost has been unpacked to: %s\n' '${{ steps.boost.outputs.root }}'
    printf 'Libraries can be found here: %s\n' '${{ steps.boost.outputs.librarydir }}'
  shell: bash
  • x64 is the default value for the platform parameter and can be omitted. Use x86 if you want to build 32-bit binaries.
  • Release is the default value for the configuration parameter and can be omitted. Use Debug if you want to build debug binaries.
  • Set static to 1 if you want to build static libraries.
  • Set static-runtime to 1 if you want to link to the static runtime.

API

Input Value Default Description
version required Boost version to build, e.g. 1.71.0.
libraries required Space-separated list of libraries to build, e.g. filesystem program_options system.
toolset auto Use GCC on Linux and MSVC on Windows.
msvc Use MSVC. Supports different versions [1].
vs Visual Studio; same as "msvc". Supports different versions [2].
gcc Use GCC.
mingw Use MinGW-w64.
clang Use Clang.
platform x64 Build 64-bit binaries.
x86 Build 32-bit binaries.
configuration Release Build Release binaries.
Debug Build Debug binaries.
static any Shared libraries.
1 Static libraries.
static-runtime any Link to the shared runtime.
1 Link to the static runtime.
directory empty Build in ${{ runner.workspace }}/boost.
any Build in a custom directory.
  1. Toolset "msvc" can have an optional version suffix: msvc140, msvc141, msvc142, msvc143.
  2. Toolset "vs" can have an optional version suffix: vs2015, vs2017, vs2019, vs2022.
Output Example CMake input Description
root D:\a\project\boost BOOST_ROOT Root Boost directory.
librarydir D:\a\project\boost\stage\x64\Debug\lib BOOST_LIBRARYDIR Directory that contains the built libraries.

Use the librarydir output to locate the built libraries. You can pass it to CMake using the BOOST_LIBRARYDIR parameter:

> cmake -D "BOOST_ROOT=${{ steps.boost.outputs.root }}" \
        -D "BOOST_LIBRARYDIR=${{ steps.boost.outputs.librarydir }}" \
        ...

Caching

Cache the Boost distribution archive by using the actions/cache action. For example, for Boost version 1.72.0:

- name: Cache Boost
  uses: actions/cache@v2
  with:
    path: '${{ runner.workspace }}/boost_*.tar.gz'
    key: 'boost-1.72.0'

- name: Build Boost
  # This won't re-download the archive unnecessarily:
  uses: egor-tensin/build-boost@v1
  with:
    version: 1.72.0
  ...

Boost.Python

See an example CMakeLists.txt file for how to link to Boost.Python libraries using CMake.

Notes

  • This action uses my other project cmake-common to actually download and build Boost.
  • cmake-common sees a lot more testing than this action, while this action delegates almost everything to it.
  • You can use my other actions setup-gcc, setup-mingw, setup-clang to set up different toolsets targetting both x86 and x64.

License

Distributed under the MIT License. See LICENSE.txt for details.