- rb++: Added rice as a gem dependency
- rb++: explicitly requiring fileutils now
- all: Added ldflags / cxxflags options for passing in other custom
command line arguments
- gccxml: Error message about how to fix the file execution flags is
now consistent across platforms.
== What is rb++ / rbgccxml?
For anyone who wants an alternative to SWIG for generating Ruby
extensions from C++ header files, look no further.
Project Page: http://rubyforge.org/projects/rbplusplus
This single command will grab the whole stack needed for rb++ to work.
gem install rbplusplus
The stack includes three libraries: rb++, rbgccxml, and gccxml_gem and
also installs rice
Rb++ makes it almost trivially easy to create Ruby extensions for any
C or C++ library / code. In the simplest of cases, there is no need to
ever touch C, everything is done in a very simple and clean Ruby API.
As this is an 0.1 release, not all of C++ is supported. The current
constructs that rb++ can wrap are:
- class methods
- static class methods
Rb++ allows one to define Ruby Modules and put wrapped code in them as
RbGCCXML allows one to easily parse out and query C++ code. This
library uses GCC-XML to parse out the C++ code into XML, and then
Hpricot to parse and query that XML.
GCC-XML (www.gccxml.org) is an application that takes takes the parse
tree of G++ and constructs a very parsable and queryable XML file with
all related information.
The third part of the stack is this gem that includes a binary build
of GCC-XML for your platform, to make it trivially easy to install.
Platforms currently supported are:
- Linux 32 & 64 bit
- Mac OS X 10.5 (may have an issue with 10.4 or lower, need to test
- Windows 32-bit via Cygwin
- rice (http://rice.rubyforge.org) - The C++ interface for Ruby
- hpricot (http://code.whytheluckystiff.net/hpricot/) - Does the XML
- test/spec - For running the tests
All code is hosted at github
Released under the MIT licence.
For those familiar with py++ / pygccxml, the similarities are in
function only. Rb++ / rbgccxml were written from scratch to take
advantage of the Ruby language to it’s fullest.
Bugs, patches, feature requests, et al should be posted to the
Discussion can be here or the project’s rubyforge forums.