Search code examples
pythonc++11distutils

How to specify C++11 with distutils?


I have a module that needs to be compiled with C++11. On GCC and Clang, that means a std=c++11 switch, or std=c++0x on older compilers.

Python is not compiled with this switch so Distutils doesn't include it when compiling modules.

What is the preferred way to compile C++11 code with distutils?


Solution

  • You can use the extra_compile_args parameter of distutils.core.Extension:

    ext = Extension('foo', sources=[....],
                    libraries=[....], 
                    extra_compile_args=['-std=c++11'],
                    ....)
    

    Note that this is completely platform dependent. It won't even work on some older versions of gcc and clang.