On Sun, Jan 31, 2010 at 6:23 PM, Chris Lasher wrote:
> I asked this question on Stack Overflow, but realized that perhaps few from
> the Py++ community are there yet. I'm re-posting the question here; I hope
> you don't mind.
>
> http://stackoverflow.com/questions/2169948/using-code-generated-by-py-as-a-python-extension
I will answer here, would you mind to upload the answer to
stackoverflow? Thanks.
>
> I have a need to wrap an existing C++ library for use in Python.
> reading through this answer
> http://stackoverflow.com/questions/456884/extending-python-to-swig-or-not-to-swig/456949#456949
> on choosing an appropriate method to wrap C++ for use in Python, I decided
> to go with Py++.
>
> I walked through the tutorial for Py++
> http://www.language-binding.net/pyplusplus/documentation/tutorials/module_builder/module_builder.html
> , using the tutorial files, and I got the expected output in generated.cpp,
> but I haven't figured out what to do in order to actually use the generated
> code as an extension I can import in Python. I'm sure I have to compile the
> code, now, but with what? Am I supposed to use bjam?
After you generated the code you have to compile it and for this
purpose you can use your favorite build system. I use bjam only to
compile boost. After this, I prefer to use scons ( on Windows and on
Linux ).
The following is an example of sconstruct file, which is used to
compile one of the Py++ unittests:
( this is a generated code too :-) )
import sys
env = Environment()
if 'linux' not in sys.platform:
env['MSVS'] = {'VERSION': ''}
env['MSVS_VERSION'] = ''
Tool('msvc')(env)
t = env.SharedLibrary( target=r'abstract_classes'
, source=[
r'/home/roman/language-binding/sources/pyplusplus_dev/unittests/temp/abstract_classes.cpp'
]
, LIBS=[ r"boost_python" ]
, LIBPATH=[ r"",r"/home/roman/include/libs" ]
, CPPPATH=[
r"/home/roman/boost_svn",r"/usr/include/python2.6",r"/home/roman/language-binding/sources/pyplusplus_dev/unittests/temp",r"/home/roman/language-binding/sources/pyplusplus_dev/unittests/data",r"/home/roman/boost_svn"
]
, CCFLAGS=[ ]
, SHLIBPREFIX=''
, SHLIBSUFFIX='.so'
)
Since your code generator written in Python, you can continue where
Py++ stops and generate your favorite "make" file. You can go even
father. Py++ tests generate the code, compile, load new module and
test the functionality. All this is done in a single, stand alone
process.
HTH
--
Roman Yakovenko
C++ Python language binding
http://www.language-binding.net/
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig