2015-11-04 15 views
8

Chcę przekazać kilka dodatkowych opcji do kompilatora Cython za pomocą extra_compile_args.extra_compile_args w Cython

My 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"]), 
) 

Jednak, gdy biegnę python setup.py build_ext --inplace, otrzymuję następujące ostrzeżenie:

UserWarning: got unknown compilation option, please remove: extra_compile_args 

Pytanie: W jaki sposób jeden użycie extra_compile_args prawidłowo?

Używam Cython 0.23.4 pod Ubuntu 14.04.3.

Odpowiedz

9

Użyj bardziej tradycyjny sposób, bez cythonize dostarczyć dodatkowe opcje kompilatora: Prace odpowiedź

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

Takie podejście nie wydaje się respektować słowa "--inplace". Zobacz moje obejście. – Nick

3

Mike Muller, ale buduje rozszerzeń w bieżącym katalogu, a nie obok pliku .pyx gdy --inplace jest podany jak w:

python3 setup.py build_ext --inplace 

Więc moje obejście jest skomponować ciąg CFLAGS i zastąpić zmienną env:

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