我目前有一个项目,我们大量使用 Cython 来加速我们所有的子模块/类,我希望用clang而不是gcc在 Linux 系统上编译它们。为此,我目前有一个函数可以通过以下方式收集所有扩展:
def extensions():
try:
from Cython.Build import cythonize
except ImportError:
def cythonize(*args, **kwargs):
print("Hint: Wrapping import of cythonize in extensions()")
from Cython.Build import cythonize
return cythonize(*args, **kwargs)
try:
import numpy
lstIncludes = [numpy.get_include()]
except ImportError:
lstIncludes = []
extensionArguments = {
'include_dirs':
lstIncludes + ['package/core', 'package/inspect', 'util'],
'extra_compile_args': compilerArguments,
'extra_link_args': linkerArguments,
'define_macros': defineMacros
}
return cythonize(
[Extension("*", ["package/*.pyx"], **extensionArguments),
Extension("*", ["package/algs/*.pyx"], **extensionArguments),
Extension("*", ["package/core/*.pyx"], **extensionArguments)],
compiler_directives=cythonDirectives)
Run Code Online (Sandbox Code Playgroud)
此外,我设置
os.environ["CC"] = "clang"
os.environ["CXX"] = …Run Code Online (Sandbox Code Playgroud)