I want to pass some extra options to the Cython
compiler by using extra_compile_args
.
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"]),
)
However, when I run python setup.py build_ext --inplace
, I get the following warning:
UserWarning: got unknown compilation option, please remove: extra_compile_args
Question: How does one use extra_compile_args
correctly?
I use Cython 0.23.4
under Ubuntu 14.04.3
.
Use the more traditional way without cythonize
to supply extra compiler options:
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}
)
Mike Muller's answer works, but builds extensions in the current directory, not next to the .pyx
file when --inplace
is given as in:
python3 setup.py build_ext --inplace
So my workaround is to compose a CFLAGS string and override the env variable:
os.environ['CFLAGS'] = '-O3 -Wall -std=c++11 -I"some/custom/paths"'
setup(ext_modules = cythonize(src_list_pyx, language = 'c++'))