portable extensions options for external libraries
Robert Kern
robert.kern at gmail.com
Wed Oct 18 12:47:29 EDT 2006
Alexandre Guimond wrote:
> so my question is: what is the right way of specifying extensions
> options (include_dirs, libraries, library_dirs) so that they are
> portable between windows and linux? i'm thinking environment variables.
The user can already use command-line options and CFLAGS if he so desires, so I
wouldn't add any new environment variables.
$ CFLAGS=-I/opt/local/include python setup.py build_ext -L/opt/local/lib
> Though fairly easy to do, i was wondering if python/distutils provided
> something more convenient, like searching through "common" directories,
> though those aren't very standard on windows?
distutils wouldn't do any searching at all. Your compiler will, though.
> Optimally, i would like
> to have something like:
>
> imaging = Extension( 'pyag.imaging._imaging',
> sources = ( glob.glob(
> 'Source/pyag/imaging/Src/*.cpp' ) +
> glob.glob(
> 'Source/pyag/imaging/Src/*.h' ) ),
> include_dirs = ( get_numpy_include_dirs() +
> [ 'Source/pyag/imaging/Src/' ] +
> boost_include_dirs +
> gsl_include_dirs ),
> library_dirs = boost_library_dirs +
> gsl_library_dirs,
> libraries = boost_libraries + gsl_libraries )
That's pretty much how everyone else does it. Just make sure that
boost_{include,library}_dirs and gsl_{include,library}_dirs are defined near the
top of the file with suitable comments to draw attention to them.
However, I might suggest making a setup.cfg with something like the following
section (unindented):
# Uncomment and modify the following section to configure the locations of the
# Boost and GSL headers and libraries.
#[build_ext]
#include-dirs=/opt/local/include,/usr/local/include
#library-dirs=/opt/local/lib,/usr/local/lib
Changing data in a data file feels better to me than changing data in a program
for some reason.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list