How to specify C++11 with distutils?

c++11, distutils, python

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.

Problem

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?

Original source