Python Makefile Tool
Project description
pymaketool
pymaketool is an elegant and simple tool to build and manager large C/C++ projects and libraries. The main purpose is to ease the build process of a project using Python for find and organize file sources.
Quick Start
Install required packages:
Ubuntu
$ sudo apt-get install -y gcc make python3 python3-pip python3-gi python3-gi-cairo gir1.2-gtk-3.0 git time zip
Fedora
$ sudo dnf install python3 python3-pip python3-gobject gtk3 time zip git gcc
Arch Linux
$ sudo pacman -S gcc make python python-pip python-gobject gtk3 time zip git
Install pymaketool:
$ pip3 install pymaketool
Create new basic C project.
$ pynewproject CLinuxGCC
(author) Your name: Ericson
(project_name) Your project name: hello
$ cd hello
hello$ make clean
hello$ make
hello$ ./Release/hello
Note: this example use EclipseAddon by default, pymaketool generate files .setting/language.settings.xml and .cproject.
Quick start in Docker
Pull imagen and run container:
$ docker pull ericsonjoseph/pymaketool
$ docker run -it ericsonjoseph/pymaketool
ubuntu@$ pynewproject CLinuxGCC
Quick Info
pymaketool process modules of code like objects. These objects ware define by files *_mk.py. With Python you can code how to discover and get source files and include paths, e.g.:
# File app_mk.py
from pymakelib import module
@module.ModuleClass
class App(module.AbstractModule):
def getSrcs(self):
# Get all sources .c in current folder ./app/
# return [ 'app/app.c' ]
return self.getAllSrcsC()
def getIncs(self):
# Get all include paths in current folder ./app/
# return [ 'app/app.c' ]
return self.getAllIncsC()
The file app_mk.py could be more short and ease, e.g.:
# File app_mk.py
from pymakelib import module
# BasicCModule inherits from AbstractModule and implement getSrcs and getIncs.
@module.ModuleClass
class App(module.BasicCModule):
pass
The file app_mk.py in raw style:
# File app_mk.py
from pymakelib import module
@module.ModuleClass
class App():
def getSrcs(self):
return [
'app/app.c'
]
def getIncs(self):
return [
'app'
]
Remote modules could be load like static libraries and with special compiler flags. e.g:
# File extlib_mk.py
from pymakelib import module
@module.ModuleClass
class ExtLib(module.ExternalModule):
def init(self):
# Compile modulelib like static library (Optional)
return module.StaticLibrary("modulelib", "Release", rebuild=True)
def getModulePath(self)->str:
# Location of module
return '/LIBS/module_lib/module_lib_mk.py'
def getCompilerOpts(self):
# Override method and set speacial compiler flags (Optional)
opts = project.getCompilerOpts()
opts['CONTROL-C-OPTS'] = ['-std=c99']
return opts
For install guide go to install-guide
For more documentation go to Read the Docs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pymaketool-2.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1916e8548a65fa8f9dc03964b8078b1ae9e851d75bd04e367d8788b492c41bb |
|
MD5 | 8582283c30bd8f0c619899b8a2a99f30 |
|
BLAKE2b-256 | d0aef91caf209922b8fd96f79c7628ba7ab3715751156020b4a782d9549ab9cb |