以下回答是由我提供的Roman Yakovenko on the Python C++-sig mailing list;为了Stack Overflow社区的利益,我在这里发布了它,并做了少量修改。
我还没有完全理解答案,但我觉得它指向了正确的方向。
生成代码后,您必须进行编译。为此,您可以使用您最喜爱的构建系统。我只使用bjam来编译boost。在此之后,我更喜欢使用scons(在Windows和Linux上)。
以下是sconstruct文件,它是用于编译PY ++单元测试中的一个(这是产生的代码太:-))的一个例子:
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'
)
由于代码发生器Python编写,则可以在Py ++停止的地方继续并生成你最喜欢的“make”文件。你甚至可以去做父亲。 Py ++测试生成代码,编译,加载新模块并测试功能。所有这些都是在一个独立的过程中完成的。
你见过这是来自Py ++作者的公告? http://mail.python.org/pipermail/cplusplus-sig/2009-January/014198.html – torial 2010-01-30 23:46:34
我有,但它仍然在回答我的问题之前结束:“最后一步 - 代码生成。”我认为最后一步应该使用编译和导入的代码,而不是仅仅生成代码。 – gotgenes 2010-01-31 16:17:04