Skip to main content

A lightweight cross-platform build system for c/c++, written in python

Project description

https://img.shields.io/pypi/v/pybythec.svg https://img.shields.io/travis/glowtree/pybythec.svg

Install

pip install pybythec

Source

Find the latest version on github: https://github.com/glowtree/pybythec

Usage

Create a pybythec.json file (or .pybythec.json) in the same directory as your c / c++ files.

Here’s an example of what would be declared in pybythec.json if you were building an executable called Simple:

{
  "target": "Simple",
  "binaryType": "exe",
  "sources": "main.cpp",
  "installPath": "."
}

Then from the command line run:

pybythec

Clean your project with:

pybythec -cl

Clean your project and all it’s dependencies with:

pybythec -cla

Look at other exmples in the ‘./example’ directory to see how to build a static library, a dynamic library, and also an executable with library dependencies.

pybythec assumes your already have the compiler / linker you want to use installed on your machine, currently gcc, clang and msvc are supported.

When you install pybythec with pip it will add a file called .pybythecGlobals.json to your home directory. This is a master file that declares all of your compiler and linker configurations. You can edit this as needed for system-wide configuration. If you want to move this file just be sure to have an environment variable called PYBYTHEC_GLOBALS point to the new location, for example:

export PYBYTHEC_GLOBALS=/Users/user/dev/.myPybythecGlobals.json

or for windows powershell:

$env:PYBYTHEC_GLOBALS="C:/Users/user/dev/.myPybythecGlobals.json"

There are up to 3 configuration files for any given build: global, project and local, where project overrides global, and local overrides both global and project.

You can point pybythec to the project configuration file with the environment variable PYBYTHEC_PROJECT, for example:

export PYBYTHEC_PROJECT=/Users/user/dev/myProject/.myProjectConfig.json

pybythec will always look for your local file in your current directoy, and it must be called pybythec.json or .pybythec.json.

You don’t need all 3 to build, in fact you could even put everything into one of those 3 files if you really wanted to.

The configuration files allow for nested declarations so that you can get specific for your building needs.

For example if I want a preprocessor declaration that’s project wide but only used when building on OS X for gcc, I can add the following to my project level config file:

"defines":
{
  "osx": {
    "gcc" : "SOME_DEFINE"
  }
}

You can use environmet variables in your configuration files simply by prepending with $, for example:

"libPaths": "$SHARED/lib"

You can have a python script automatically run after the build finishes, just be sure it’s called pybythecPost.py or .pybythecPost.py.

Currently pybythec supports gcc/g++, clang/clang++ and msvc

More documentation to come!!!

License

See LICENSE

Project details


Download files

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

Source Distribution

pybythec-0.9.5.zip (20.4 kB view hashes)

Uploaded Source

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