How do I pass structures using a C extension?

timothy.williams at nvl.army.mil timothy.williams at nvl.army.mil
Tue Mar 15 09:50:52 EST 2005


I have access to the source, so it seems that I can create shareable
libs for the libraries I want to use using distutils. I do a
glob.glob() on the *.c files in the libscr directory.  If I copy the
main library.h file over to where my module.i file is, I can do a
%include on it and things seem to get built fine. (I still need to
actually call something to see if it works.)

Is there a way to change my setup.py file to look in the locations
specified by the 'include_dirs' argument? This argument works for my C
compiling, but it doesn't get passed to swig.


#!/bin/env python
import sys, os, glob
from distutils.core import setup, Extension

py_version='python%d.%d' % (sys.version_info[0],sys.version_info[1])
OTB_HOME='/vps/otbknox/williams/OTB_2.0'
OTB_INCLDIR=[
    os.path.join(OTB_HOME, 'include', 'global'),
    os.path.join(OTB_HOME, 'include', 'libinc'),
    os.path.join(sys.prefix,'include',py_version),
    OTB_HOME
    ]
libsrcs=glob.glob(os.path.join(OTB_HOME,'libsrc','libcmdline','*.c'))

setup (name = 'OTB_libs',
       version='1.0',
       author="Tim Williams",
##       packages=['cmdline'],
##       ext_package='OTB_libs',
       ext_modules=[Extension('_cmdline',
                              sources=['cmdline.i']+ libsrcs,
                              include_dirs=OTB_INCLDIR
                              )
                    ]
       )


running build
running build_ext
building '_cmdline' extension
swigging cmdline.i to cmdline_wrap.c
swig -python -o cmdline_wrap.c cmdline.i
cmdline.i:9: Unable to find 'libcmdline.h'
error: command 'swig' failed with exit status 1




More information about the Python-list mailing list