⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sipdistutils.py

📁 这是关于RFC3261实现sip的源代码
💻 PY
字号:
# Subclasses disutils.command.build_ext,# replacing it with a SIP version that compiles .sip -> .cpp# before calling the original build_ext command.# Written by Giovanni Bajo <rasky at develer dot com># Based on Pyrex.Distutils, written by Graham Fawcett and Darrel Gallion.import distutils.command.build_extfrom distutils.dep_util import newerimport osimport sysdef replace_suffix(path, new_suffix):    return os.path.splitext(path)[0] + new_suffixclass build_ext (distutils.command.build_ext.build_ext):    description = "Compiler SIP descriptions, then build C/C++ extensions (compile/link to build directory)"    def _get_sip_output_list(self, sbf):        """        Parse the sbf file specified to extract the name of the generated source        files. Make them absolute assuming they reside in the temp directory.        """        for L in file(sbf):            key, value = L.split("=", 1)            if key.strip() == "sources":                out = []                for o in value.split():                    out.append(os.path.join(self.build_temp, o))                return out        raise RuntimeError, "cannot parse SIP-generated '%s'" % sbf    def _find_sip(self):        import sipconfig        cfg = sipconfig.Configuration()        return cfg.sip_bin    def _sip_inc_dir(self):        import sipconfig        cfg = sipconfig.Configuration()        return cfg.sip_inc_dir    def swig_sources (self, sources, extension=None):        if not self.extensions:            return        # Add the SIP include directory to the include path        if extension is not None:            extension.include_dirs.append(self._sip_inc_dir())        else:            # pre-2.4 compatibility            self.include_dirs.append(self._sip_inc_dir())        # Create the temporary directory if it does not exist already        if not os.path.isdir(self.build_temp):            os.makedirs(self.build_temp)        # Collect the names of the source (.sip) files        sip_sources = []        sip_sources = [source for source in sources if source.endswith('.sip')]        other_sources = [source for source in sources if not source.endswith('.sip')]        generated_sources = []        sip_bin = self._find_sip()        for sip in sip_sources:            # Use the sbf file as dependency check            sipbasename = os.path.basename(sip)            sbf = os.path.join(self.build_temp, replace_suffix(sipbasename, "sbf"))            if newer(sip, sbf) or self.force:                self._sip_compile(sip_bin, sip, sbf)            out = self._get_sip_output_list(sbf)            generated_sources.extend(out)        return generated_sources + other_sources    def _sip_compile(self, sip_bin, source, sbf):        self.spawn([sip_bin,                    "-c", self.build_temp,                    "-b", sbf,                    source])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -