Skip to main content

A python-based meta-build system for C++ projects.

Project description

SBuildr - Stupid Buildr

A stupid, simple python-based meta-build system for C++ projects.

Installation

Prerequisites

  1. RBuild
    • Install Cargo
    • Run cargo install rbuild

Installing from PyPI

pip install sbuildr

Installing from Source

  1. Clone the SBuildr source repository.
  2. Install locally with python setup.py install

A Small Example

For this example, we will assume the following directory structure:

minimal_project
├── build.py
├── include
│   └── math.hpp
├── src
│   ├── factorial.cpp
│   ├── factorial.hpp
│   ├── fibonacci.cpp
│   ├── fibonacci.hpp
│   └── utils.hpp
└── tests
    └── test.cpp

The corresponding build.py file might look like this:

#!/usr/bin/env python
import sbuildr
import os

project = sbuildr.Project()

# Build a library using two source files. Note that headers do not have to be specified manually.
# Full file paths are only required in cases where a partial path would be ambiguous.
libmath = project.library("math", sources=["factorial.cpp", "fibonacci.cpp"], libs=["stdc++"])

# Specify that math.hpp is part of the public API for this library.
project.interfaces(["math.hpp"])

# Specify a test for the project using the test.cpp source file. The resulting executable will
# be linked against the library created above.
test = project.test("test", sources=["test.cpp"], libs=["stdc++", libmath])

# Enable this script to be used interactively on the command-line
project.export()

The call to the cli() function allows us to use the script to build interactively in a shell. For example, to run all tests registered for this project, you can run: ./build.py test. This will configure the project, build all dependencies, and finally run tests.

To view all available commands, you can run ./build.py --help

API Documentation

For more information, see the API Documentation

Known Limitations

  • SBuildr's header scanning functionality does not take into account preprocessor #ifdefs. This means that an #include in a false branch will still be used as a dependency during builds. Header scanning will also not work for paths containing escaped characters.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

SBuildr-0.6.4-py3-none-any.whl (54.9 kB view details)

Uploaded Python 3

File details

Details for the file SBuildr-0.6.4-py3-none-any.whl.

File metadata

  • Download URL: SBuildr-0.6.4-py3-none-any.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10

File hashes

Hashes for SBuildr-0.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 15be2df2890d7a871e236d470b7b46bd17b19b0978cf0eef1e8c423f8916b20e
MD5 e630ae53cca6033e25ca0164a8351725
BLAKE2b-256 259070dd6af3cf5833d0ee16666f8c13aae7bbeb24b22ab31157bd7109b4bf2a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page