以下回答是由我提供的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