Building Your Extension with distutils — SIP v4.19.25 Reference Guide

# Building Your Extension with distutils

Note

This should not be used for new projects as it will not be supported by SIP v5.

To build the example in A Simple C++ Example using distutils, it is sufficient to create a standard `setup.py`, listing `word.sip` among the files to build, and hook-up SIP into distutils:

    from distutils.core import setup, Extension
    import sipdistutils

    setup(
      name = 'word',
      versione = '1.0',
      ext_modules=[
        Extension("word", ["word.sip", "word.cpp"]),
        ],

      cmdclass = {'build_ext': sipdistutils.build_ext}
    )

As we can see, the above is a normal distutils setup script, with just a special line which is needed so that SIP can see and process `word.sip`. Then, running `setup.py build` will build our extension module.

If you want to use any of sip’s command-line options described in The SIP Command Line, there is a new option available for the `build_ext` command in distutils: `--sip-opts`. So you can either invoke distutils as follows:

    $ python setup.py build_ext --sip-opts="-e -g" build

or you can leverage distutils’ config file support by creating a `setup.cfg` file in the supported system or local paths (eg: in the same directory of `setup.py`) with these contents:

    [build_ext]
    sip-opts = -e -g

and then run `setup.py build` as usual.

If `sip-opts` has not been specified then any `swig_opts` defined when creating the `Extension` will be used.