2015-11-04 9 views
8

extra_compile_argsを使用してCythonコンパイラにいくつかの追加オプションを渡したいと思います。Cythonのextra_compile_args

マイsetup.py

from distutils.core import setup 

from Cython.Build import cythonize 

setup(
    name = 'Test app', 
    ext_modules = cythonize("test.pyx", language="c++", extra_compile_args=["-O3"]), 
) 

私はpython setup.py build_ext --inplaceを実行したときしかし、私は次のような警告が出ます:

UserWarning: got unknown compilation option, please remove: extra_compile_args 

質問:どのように1はextra_compile_argsを正しく使用していますか?

Cython 0.23.4Ubuntu 14.04.3の下で使用します。

答えて

9

余分なコンパイラオプション供給するcythonizeなく、より伝統的な方法を使用します。

from distutils.core import setup 
from distutils.extension import Extension 
from Cython.Distutils import build_ext 

setup(
    name = 'Test app', 
    ext_modules=[ 
    Extension('test', 
       sources=['test.pyx'], 
       extra_compile_args=['-O3'], 
       language='c++') 
    ], 
    cmdclass = {'build_ext': build_ext} 
) 
+0

このアプローチは '--inplace'を尊重していないようです。私の回避策を参照してください。 – Nick

3

マイク・ミュラーの答えの作品を、ではなく、次の--inplaceはのように与えられている.pyxファイルに、現在のディレクトリに拡張を構築します。

python3 setup.py build_ext --inplace 

だから私の回避策はCFLAGS文字列を構成およびenv変数を上書きすることです:

os.environ['CFLAGS'] = '-O3 -Wall -std=c++11 -I"some/custom/paths"' 
setup(ext_modules = cythonize(src_list_pyx, language = 'c++'))