emake.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:collection 作者: skywind3000 项目源码 文件源码
def python_config (self):
        cflags = self._getitem('default', 'python_cflags', None)
        ldflags = self._getitem('default', 'python_ldflags', None)
        if cflags or ldflags:
            return (cflags.strip('\r\n\t '), ldflags.strip('\r\n\t '))
        pythoninc, pythonlib = [], []
        import distutils.sysconfig
        sysconfig = distutils.sysconfig
        inc1 = sysconfig.get_python_inc()
        inc2 = sysconfig.get_python_inc(plat_specific = True)
        pythoninc.append('-I' + self.pathtext(inc1))
        if inc2 != inc1:
            pythoninc.append('-I' + self.pathtext(inc2))
        pyver = sysconfig.get_config_var('VERSION')
        getvar = sysconfig.get_config_var
        if not pyver:
            v1, v2 = sys.version_info[:2]
            pyver = self.unix and '%s.%s'%(v1, v2) or '%s%s'%(v1, v2)
        lib1 = getvar('LIBS')
        pythonlib.extend(lib1 and lib1.split() or [])
        prefix = sys.prefix
        if os.path.exists(prefix):
            if not pythoninc:
                n1 = os.path.join(prefix, 'include/python%s'%pyver)
                n2 = os.path.join(prefix, 'include')
                if os.path.exists(n1 + '/Python.h'):
                    pythoninc.append('-I' + self.pathtext(n1))
                elif os.path.exists(n2 + '/Python.h'):
                    pythoninc.append('-I' + self.pathtext(n2))
            if not pythonlib:
                n1 = os.path.join(prefix, 'lib/python%s'%pyver)
                n2 = os.path.join(n1, 'config')
                n3 = os.path.join(prefix, 'libs')
                fn1 = 'libpython' + pyver + '.a'
                fn2 = 'libpython' + pyver + '.dll.a'
                done = False
                for ff in (fn1, fn2):
                    for nn in (n1, n2, n3):
                        if os.path.exists(nn + '/' + ff):
                            pythonlib.append('-L' + self.pathtext(nn))
                            done = True
                            break
                    if done:
                        break
        lib2 = getvar('SYSLIBS')
        pythonlib.extend(lib2 and lib2.split() or [])
        if not getvar('Py_ENABLE_SHARED'):
            if getvar('LIBPL'):
                pythonlib.insert(0, '-L' + getvar('LIBPL'))
        if not getvar('PYTHONFRAMEWORK'):
            if getvar('LINKFORSHARED'):
                pythonlib.extend(getvar('LINKFORSHARED').split())
        pythonlib.append('-lpython' + pyver)
        cflags = ' '.join(pythoninc)
        ldflags = ' '.join(pythonlib)
        return cflags, ldflags

    # ???? java??
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号