Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markusjx/install-boost
Install boost on Github actions
https://github.com/markusjx/install-boost
actions boost cplusplus cpp github-actions macos ubuntu windows
Last synced: 7 days ago
JSON representation
Install boost on Github actions
- Host: GitHub
- URL: https://github.com/markusjx/install-boost
- Owner: MarkusJx
- License: mit
- Created: 2020-11-13T10:46:13.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-02-11T10:29:00.000Z (9 months ago)
- Last Synced: 2024-10-31T23:42:14.928Z (14 days ago)
- Topics: actions, boost, cplusplus, cpp, github-actions, macos, ubuntu, windows
- Language: TypeScript
- Homepage:
- Size: 2.55 MB
- Stars: 62
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Download and install Boost
Install Boost in GitHub actions using prebuilt binaries.
## Inputs
### `boost_version`
**Required** The boost version to install, e.g. `1.73.0`.
A list of supported versions can be found [here](https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json). If you need a specific (unlisted) version, open a new issue
[here](https://github.com/MarkusJx/prebuilt-boost), requesting the required version.### `platform_version`
**Optional** The platform version of the system boost was compiled on, e.g. `18.04` for `ubuntu-18.04`, `2016` for `windows-2016` or `10.15` for `macos-10.15`.
Supported values are `2016` (windows, until boost v1.78.0), `2019` (windows), `2022` (windows), `18.04` (ubuntu),
`20.04` (ubuntu), `10.15` (macOs), `11` (macOs). **You maybe want to set this as a version will**
**be selected at random if unset and [may cause issues](https://github.com/MarkusJx/install-boost/issues/7).**### `boost_install_dir`
**Optional** The directory to install boost into. If specified, boost will be installed into
`$boost_install_dir/boost/boost/`. The default value is `${{github.workspace}}`.### `version`
**Optional** The version of the `install-boost` action to use. Must be either `default` or `legacy`. Defaults to `default`.
If the `default` version is used, the binaries are downloaded from [MarkusJx/prebuilt-boost](https://github.com/MarkusJx/prebuilt-boost).
The list of supported toolsets and versions can be found [here](https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json).
If the `legacy` version is used, the binaries are downloaded from [actions/boost-versions](https://github.com/actions/boost-versions).
The list of supported toolsets and versions can be found [here](https://github.com/actions/boost-versions/blob/main/versions-manifest.json).### `toolset`
**Optional** A toolset used to compile boost, e.g. `msvc`.
May be one of `msvc` (windows), `mingw` (windows), `gcc` (linux) or `clang` (macOs).
**You maybe want to set this on windows (when boost version is >= `1.78.0`) as either `mingw` or `msvc` will be selected at random**
**which may cause your build to fail.**
Selecting this is only supported for boost versions `1.78.0` and higher with the new version of
this action or any version with the legacy versions. Please refer to the provided version manifests
for further information.### `link`
**Optional** Whether the boost libraries will be supplied through static or shared libraries.
May be one of `static`, `shared` or `static+shared` for both static and shared
libraries to be supplied. Is only effective on windows, as unix builds contain by
default both static and shared libraries. On windows, only `static` or `shared`
may be specified, as these binares can only contain either static or shared libraries.
If nothing is specified, static libraries will be preferred.### `arch`
**Optional** The architecture the binares were built for. Must be either `x86` for
default x86/amd64 or `aarch64` for arm64 systems. The `x86` can be used for
the default github runners, the `aarch64` images may be used for cross-compiling
binaries for arm systems. If not set, `x86` images will be used. Only works on
`linux` images with version `20.04` (or just specify no os version).### `cache`
**Optional** Whether to use `actions/cache` to further decrease build times.
Defaults to `true`, you'll only ever need to set this if you want to disable the cache.## Outputs
### `BOOST_ROOT`
The boost root directory path, to be passed to another tool, e.g. CMake to find Boost:
```yml
- name: Configure CMake
run: cmake . -DCMAKE_BUILD_TYPE=$BUILD_TYPE -B build
env:
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
```**Notes**: Sometimes you'll have to pass the path to the include and library directories to cmake:
```yml
- name: Configure CMake
run: |
cmake . -DCMAKE_BUILD_TYPE=$BUILD_TYPE -B build\
-DBoost_INCLUDE_DIR=${{steps.install-boost.outputs.BOOST_ROOT}}/include\
-DBoost_LIBRARY_DIRS=${{steps.install-boost.outputs.BOOST_ROOT}}/lib
env:
BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }}
```### `BOOST_VER`
The version of boost installed, e.g. `boost-1.73.0-linux-16.04`.
## Example usage
### Windows
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a custon install location
boost_install_dir: C:\some_directory
# OPTIONAL: Specify a platform version
platform_version: 2019
# OPTIONAL: Specify a toolset
toolset: msvc# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```### Ubuntu
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a platform version
platform_version: 18.04
# OPTIONAL: Specify a custom install location
boost_install_dir: /home/runner/some_directory
# OPTIONAL: Specify a toolset
toolset: gcc
# OPTIONAL: Specify an architecture
arch: x86# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```### MacOs
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a platform version
platform_version: 10.15
# OPTIONAL: Specify a custom install location
boost_install_dir: /home/runner/some_directory
# OPTIONAL: Specify a toolset
toolset: clang# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```### Legacy use
#### Windows
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/actions/boost-versions/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a toolset on windows
toolset: msvc14.2
# OPTIONAL: Specify a custon install location
boost_install_dir: C:\some_directory# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```or
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/actions/boost-versions/blob/main/versions-manifest.json
boost_version: 1.73.0
# Use the legacy version of this action
version: legacy
# OPTIONAL: Specify a toolset on windows
toolset: msvc14.2
# OPTIONAL: Specify a custon install location
boost_install_dir: C:\some_directory# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```#### Ubuntu
```yml
- name: Install boost
uses: MarkusJx/[email protected]
id: install-boost
with:
# REQUIRED: Specify the required boost version
# A list of supported versions can be found here:
# https://github.com/actions/boost-versions/blob/main/versions-manifest.json
boost_version: 1.73.0
# OPTIONAL: Specify a platform version on ubuntu
platform_version: 18.04
# OPTIONAL: Specify a custom install location
boost_install_dir: /home/runner/some_directory# NOTE: If a boost version matching all requirements cannot be found,
# this build step will fail
```## Caching
As of version `2.4.0`, `install-boost` natively supports caching using `actions/cache`
to further improve build times. This is enabled by default. You can disable
this behaviour by setting the `cache` variable to `false`.## Boost.Python
Starting from boost version `1.80.0`, the pre-built binaries will be built with
`boost.python` for the following python versions:- `3.7`
- `3.8`
- `3.9`
- `3.10`
- `3.11`Due to memory restrictions on the build runners, there are some binaries which don't support python:
| Platform | Link | Compiler | Arch | Python supported |
| ------------ | ------------- | -------- | ------- | ---------------- |
| ubuntu-18.04 | static+shared | gcc | x86 | ✅ |
| ubuntu-20.04 | static+shared | gcc | aarch64 | ❌ |
| ubuntu-20.04 | static+shared | gcc | x86 | ✅ |
| ubuntu-22.04 | static+shared | gcc | x86 | ✅ |
| windows-2019 | static | msvc | x86 | ✅ |
| windows-2019 | shared | msvc | x86 | ❌ |
| windows-2019 | static | mingw | x86 | ❌ |
| windows-2022 | static | msvc | x86 | ✅ |
| windows-2022 | shared | msvc | x86 | ❌ |
| windows-2022 | static | mingw | x86 | ❌ |
| windows-2022 | shared | mingw | x86 | ❌ |
| macos-10.15 | static+shared | clang | x86 | ✅ |
| macos-11 | static+shared | clang | x86 | ✅ |
| macos-12 | static+shared | clang | x86 | ✅ |