2015-11-04 14 views
8

Desidero passare alcune opzioni aggiuntive al compilatore Cython utilizzando extra_compile_args.extra_compile_args in Cython

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

Tuttavia, quando corro python setup.py build_ext --inplace, ottengo il seguente avviso:

UserWarning: got unknown compilation option, please remove: extra_compile_args 

Domanda: Come si fa a uso extra_compile_args correttamente?

Io uso Cython 0.23.4 sotto Ubuntu 14.04.3.

risposta

9

Utilizzare il modo più tradizionale, senza cythonize di fornire opzioni di compilazione aggiuntivi: opere risposta di

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

Questo approccio non sembra rispettare '--inplace'. Guarda la mia soluzione. – Nick

3

Mike Muller, ma costruisce estensioni nella directory corrente, non accanto al .pyx file quando --inplace è dato come in:

python3 setup.py build_ext --inplace 

Quindi la mia soluzione è quella di comporre una stringa di CFLAGS e sovrascrivere la variabile ENV:

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