以下答案由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++ 测试生成代码、编译、加载新模块并测试功能。所有这些都在一个独立的过程中完成。