2010-08-18 88 views
2

我已經在C中編寫了一個Python擴展庫,我目前正在使用distutils來構建它。我也有一個生成.h文件的Python腳本,我希望將其包含在我的擴展中。python distutils,用生成的源代碼編寫c擴展

是否有可能使用distutils設置這樣的依賴關係?它能夠注意到我的腳本更改時,重新生成.h文件並重新編譯擴展名?

回答

0

您可以通過從distutils中覆蓋build_ext命令來執行此操作。

from distutils.core import setup, Extension 
from distutils.command.build_ext import build_ext as _build_ext 

module=Extension(....) # The way to build your extension 

class build_ext(_build_ext): 
    description = "Custom Build Process" 

    def initialize_options(self): 
     _build_ext.initialize_options(self) 
    def finalize_options(self): 
     _build_ext.finalize_options(self) 

    def run(self): 
     # Code to generate your .h 
     ..... 

     # Start classic Extension build 
     _build_ext.run(self) 

setup(... 
     ext_modules = [module], 
     cmdclass = { "build_ext": build_ext}, 
     ...) 

因此,每次構建擴展時,都會重新生成.h。

+0

謝謝!我將distutils.dep_util.newer與您的示例結合起來以獲得所需的行爲。 – user424599 2010-09-09 19:08:32