build.py : A wrapper to run build systems

Wraps cmake, xcode, vcpkg where cmake is mostly in charge. A python virtual env is expected.

run a build using cmake and make or xcode

usage: build.py [-h] [--swift] [--ios] [--toolchain-path TOOLCHAIN_PATH]
                [--build-type {RelWithDebInfo,Release,Debug}]
                [--build-target BUILD_TARGET] [--open-xcode]
                [--xcode-proj XCODE_PROJ] [--doc] [--resource] [--unit-tests]
                [--threads THREADS] [--project-dir PROJECT_DIR]
                [--bundle-path BUNDLE_PATH]
                {uninstall,incremental,clean,test,lint,vcpkg} ...

Positional Arguments

command

Possible choices: uninstall, incremental, clean, test, lint, vcpkg

available commands to run

Named Arguments

--swift

compile swift code using the xcode toolchain

Default: False

--ios

configure the xcode toolchain to build for ios

Default: False

--toolchain-path
 

path to a toolchain file - stomped by –ios and –swift

Default: “../foundation/third_party/vcpkg/scripts/buildsystems/vcpkg.cmake”

--build-type

Possible choices: RelWithDebInfo, Release, Debug

compile release, debug or release optimization with debug symbols

Default: “Release”

--build-target specify a target to build
--open-xcode

does nothing

Default: False

--xcode-proj name of the project to open / build
--doc

run a documentation specific build

Default: False

--resource

run a resource specific build

Default: False

--unit-tests

build unit-tests

Default: False

--threads

number of make threads to use

Default: 8

--project-dir

path to the project

Default: “.”

--bundle-path

path to the bundle executable (builds ruby projects)

Default: “/usr/local/opt/ruby@2.7/bin/bundle

Sub-commands:

uninstall

remove artifacts installed by last build

build.py uninstall [-h]

incremental

run a build only updating those things that are known changed

build.py incremental [-h] [dummy]

Positional Arguments

dummy vestigial

clean

run a fresh build after removing all build artifacts

build.py clean [-h] [clean]

Positional Arguments

clean vestigial

test

run a fresh build after removing all build artifacts

build.py test [-h] [pattern]

Positional Arguments

pattern optional regexp to match a test suite or individual test function

lint

keep track of the current pylint score for a directory

build.py lint [-h] lint_path

Positional Arguments

lint_path path to python module on which to run pylint

vcpkg

build foundational c++ libraries with vcpkg

build.py vcpkg [-h] [--vcpkg-json VCPKG_JSON]

Named Arguments

--vcpkg-json

path to the vcpkg json config

Default: “etc/vcpkg/vcpkg.json”