2010-08-18 93 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