使用特定的编译器参数编译 Cython

compile Cython with specific compiler args

当运行以下代码时:

git clone https://github.com/cython/cython.git
sudo python setup.py install

cython (Cython==0.24) 使用默认编译参数编译。 Apparently,以前是可以加:

extra_compile_args=["-O3"]

setup.py 文件并控制它。但我只是试了一下(把那行放在下面:

import platform
is_cpython = platform.python_implementation() == 'CPython'

) 当我这样做时

sudo python setup.py install

所有文件仍然使用可怕的 -O2 标志编译。如何解决这个问题?

(我正在使用 linux)

我很确定在 运行 setup.py 之前从终端使用 export CFLAGS="-O3" (正如我在评论中提到的那样)通常可以解决问题,但是,我刚刚意识到你正在尝试做。

在为需要编译的文件创建 Extention 对象时,您需要提供 extra_compile_args 作为参数。 extra_compile_args 是一个列表,其中包含您要提供的每个参数的字符串。

Cython 库的 setup.py 脚本中,that is performed in lines 163-166 如果我没记错的话。

简而言之,如果将这些行更改为:

    extensions.append(Extension(
        module, sources=[pyx_source_file],
        extra_compile_args=["-O3"],   # add the needed argument
        define_macros=defines_for_module,
        depends=dep_files))

它将确保编译的每个 .pyx 文件都指定了 -O3 参数。