nxxm.io allows to compile C & C++ software for any platform automatically providing the fitting build environment and software dependencies.
This action will allow you to compile C++ code for any nxxm supported platform.
Create a .yml
file under .github/workflows
with the following contents
A full example of a C & C++ program compiled with the nxxm/cpp-gh-action can be found here.
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
name: ci
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: nxxm_CI
uses: nxxm/nxxm_ci_docker@master
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
name: nxxm_CI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: nxxm_CI
uses: nxxm/nxxm_ci_docker@master
- name: Upload the build directory
uses: actions/upload-artifact@v2
with:
name: my_build
path: build/
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
name: nxxm_CI_input
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: nxxm_CI
uses: nxxm/nxxm_ci_docker@master
with:
target: ""
dir: ""
exclude: ""
config: ""
jobs: ""
use_cmakelists: ""
test: ""
exclude_test: ""
extra_args: ""
- name: Upload the build directory
uses: actions/upload-artifact@v2
with:
name: my_build
path: build/
env:
NXXM_AUTH: ${{ secrets.NXXM_AUTH }}
target
: Choice of the compilation target.
For linux : gcc-7-cxx17
For webassembly : wasm-cxx17
In default nxxm choose wasm-cxx17
dir
: Base dir is filled by GitHub and contains all your pull request or push directory. but if you just want to compile a specific folder you can fill in the path to it, for e.g ./src/banana
.
exclude
: Directories within project dir to exclude from source analysis
Repeat to exclude multiple dirs e.g. benchmark/ test/
config
: Build type, defaults to optimized MinSizeRel build.But you can have MinSizeRel
or Release
or RelWithDebInfo
or Debug
jobs
: How many CPU cores have to be dedicated to the build. example: 3
use_cmakelists
: true
: Don't build by convention, use CMakeLists.txt at toplevel.
test
: Whether to run the tests built ( i.e. .cpp files found in test[s]/ or example[s]/ folder)
all
runs the full test suite, example/mytest
runs mytest.
exclude_test
: regular expression to match test to exclude. When --test=all is passed, this allows excluding a test or more.
for example : mytest
etra_args
: You can enter all the other options of nxxm :
-
-s, --sources <"dir/">
: Directorie(s) containing the libs sources and headers. Defaults to project root. Repeat to add many dirs e.g. -s include -s src -
-o, --only
: Only builds the given executable. -
-n, --no-refresh
: If the dependencies were already fetched once no online access is performed. Note: tags are only accessed once, and kept in local cache. -
-D <YOUR_DEFINE[=value]>
: (Pass any defines to your code, e.g. : * -DBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS * -DBOOST_MPL_LIMIT_VECTOR_SIZE=50 * -DMYSTR=""text"" \n -
--dont-check-cli-arg
: If you don't want to check if your options are okay -
-?, -h, --help
: Options, arguments -
-v, --verbose
: Display usage information. Be verbose and prints everything the companion knows.