81 lines
3.5 KiB
Plaintext
81 lines
3.5 KiB
Plaintext
== About ==
|
|
PyBindGen is (surprise!) a python bindings generator. The main features are:
|
|
|
|
* Is written in clean, PEP 8 compliant, and pylint checked, Python code;
|
|
* Generates clean C or C++ code, nearly as readable as code written
|
|
manually by a developer;
|
|
* Generated code is self contained and does not require any external
|
|
libraries or macros; after generating the python module only python
|
|
header files are required, nothing else.
|
|
* Does not require Boost.Python (no C++ template magic, also works in C);
|
|
* The interface for code generation is a simple Python API, not some
|
|
obscure interface definition language. Additionally PyBindGen can
|
|
parse header files with gccxml, if gccxml and pygccxml are
|
|
installed in the system.
|
|
* Can be easily extended with new type handlers;
|
|
* Type handlers can allocate memory and register cleanup code to free;
|
|
* Supports in, out, and inout parameters (e.g. with pointers or C++ references);
|
|
* Supports multiple return values (e.g. due to out/inout parameters);
|
|
* Supports wrapping of simple C++ classes;
|
|
* Supports virtual methods in classes;
|
|
* Supports reference counted classes and smart pointers;
|
|
|
|
Notable features NOT implemented:
|
|
* Multiple inheritance; # relatively hard to support, little motivation
|
|
* Exceptions. # moderate difficulty, likely to be implemented sometime in the future
|
|
|
|
== Installation ==
|
|
|
|
NOTE: if checking out pybindgen from bazaar, do not forget to see the
|
|
file HACKING for additional instructions.
|
|
|
|
Before proceeding make sure the system requirements are met. PyBindGen requires:
|
|
|
|
1- Python (http://www.python.org)
|
|
2- Python development files
|
|
3- A C/C++ Compilation tool chain
|
|
4- (optional) GCCXML and PyGCCXML (0.9.5 recommended) (http://www.language-binding.net/pygccxml/download.html)
|
|
|
|
PyBindGen uses WAF (http://code.google.com/p/waf/) as build system.
|
|
However, WAF does not have to be previously installed, as it is
|
|
shipped with PyBindGen in a single 'waf' script (but note bzr branches
|
|
don't come with WAF; see HACKING for instructions to obtain WAF).
|
|
|
|
To install PyBindGen, issue the following commands:
|
|
|
|
1. ./waf configure # optionally you may add the option --prefix /foo/bar
|
|
2. ./waf # possible options: -jN for parallel build, -p for progress bar
|
|
3. ./waf check # optional step, runs the unit tests
|
|
4. ./waf --examples # optional step, compiles the examples
|
|
5. ./waf install # may require sudo
|
|
|
|
If by any chance you have trouble with WAF and are just looking to
|
|
install PyBindGen, you should know that PyBindGen is entirely
|
|
self-contained in the 'pybindgen' directory. You can simply
|
|
recursively copy the entire pybindgen folder into Python's
|
|
site-packages directory, and that's it! PyBindGen is a pure Python
|
|
package and does not actually require a C/C++ compiler; it is only
|
|
used for code generation unit tests and compiling the example modules.
|
|
|
|
=== Win32 specific notes ===
|
|
|
|
Note that if you are compiling on win32, WAF will look for MSVC
|
|
(MicroSoft Visual C) by default and give up on finding a C/C++
|
|
compiler if not found. If you do not have MSVC installed but instead
|
|
have MinGW or CygWin GCC, you have to tell WAF to look for GCC in the
|
|
configure stage:
|
|
|
|
1. ./waf configure --check-c-compiler=gcc --check-cxx-compiler=g++
|
|
|
|
|
|
|
|
== Documentation ==
|
|
|
|
The following documentation is available:
|
|
|
|
1. API docs (with introductory tutorial):
|
|
http://pybindgen.googlecode.com/svn/trunk/apidocs/index.html
|
|
2. Many simple examples, in the 'examples' directory
|
|
3. Advanced examples in the unit tests (tests/)
|
|
4. The source code!
|