Commit 5e7c6d78 authored by Wichert Akkerman's avatar Wichert Akkerman

Update compilation instructions.

parent 8a2c70cf
...@@ -67,25 +67,47 @@ The ``cythonize`` command also allows for multi-threaded compilation and ...@@ -67,25 +67,47 @@ The ``cythonize`` command also allows for multi-threaded compilation and
dependency resolution. Recompilation will be skipped if the target file dependency resolution. Recompilation will be skipped if the target file
is up to date with its main source file and dependencies. is up to date with its main source file and dependencies.
Under the hood ``cythonize`` creates a list of distutils ``Extension`` If you have include files in non-standard places you can pass an
instances. Any extra arguments you pass to ``cythonize`` will be ``include_path`` parameter to ``cythonize``::
passed to ``Extension``. This is useful if you need to add extra include or
library paths.
::
from distutils.core import setup from distutils.core import setup
from Cython.Build import cythonize from Cython.Build import cythonize
setup( setup(
name = "My hello app", name = "My hello app",
ext_modules = cythonize('src/*.pyx', ext_modules = cythonize("src/*.pyx", include_path = [...]),
)
If you need to specify compiler options, libraries to link with or other linker
options you will need to create ``Extension`` instances manually::
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
extensions = [
Extension("primes", ["primes.pyx"],
include_dirs = [...], include_dirs = [...],
library_dirs = [...], libraries = [...],
), library_dirs = [...]),
), Extension("spam", ["spam.pyx"],
include_dirs = [...],
libraries = [...],
library_dirs = [...]),
]
setup(
name = "My hello app",
ext_modules = cythonize(extensions),
) )
If your options are static (for example you do not need to call a tool like
``pkg-config`` to determine them) you can also provide them directly in your
.pyx source file using a special comment block at the start of the file::
# distutils: libraries = spam eggs
# distutils: include_dirs = /opt/food/include
Compiling with ``pyximport`` Compiling with ``pyximport``
============================= =============================
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment