Skip to content

glowtree/pybythec

Repository files navigation

pybythec

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

image

image

image

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":
{
  "macOs": {
    "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

About

a python build system for c and c++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published