Herramientas de configuración de Python que no incluyen encabezados de biblioteca estándar de C ++

Estoy tratando de compilar un contenedor de Python en una pequeña biblioteca de C ++ que he escrito. He escrito lo siguientesetup.py guión para tratar de usarsetuptools para compilar el contenedor:

from setuptools import setup, Extension
import numpy as np
import os

atmcmodule = Extension(
    'atmc',
    include_dirs=[np.get_include(), '/usr/local/include'],
    libraries=['mcopt', 'c++'],  # my C++ library is at ./build/libmcopt.a
    library_dirs=[os.path.abspath('./build')],
    sources=['atmcmodule.cpp'],
    language='c++',
    extra_compile_args=['-std=c++11', '-v'],
    )

setup(name='tracking',
      version='0.1',
      description='Particle tracking and MC optimizer module',
      ext_modules=[atmcmodule],
      )

Sin embargo, cuando corropython setup.py build en OS X El Capitan,clang se queja de no encontrar algunos encabezados de biblioteca estándar de C ++:

In file included from atmcmodule.cpp:7:
In file included from ./mcopt.h:11:
In file included from ./arma_include.h:4:
/usr/local/include/armadillo:54:12: fatal error: 'initializer_list' file not found
  #include <initializer_list>
           ^
1 error generated.
error: command 'gcc' failed with exit status 1

Pasando el-v El indicador al compilador muestra que está buscando las siguientes rutas de acceso incluidas:

#include <...> search starts here:
 /Users/[username]/miniconda3/include
 /Users/[username]/miniconda3/lib/python3.4/site-packages/numpy/core/include
 /usr/local/include
 /Users/[username]/miniconda3/include/python3.4m
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1/backward
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)
End of search list.

Aparentemente, esto no incluye la ruta a los encabezados de la biblioteca estándar de C ++. Si compilo una pequeña fuente de prueba de C ++ con el-v opción, puedo ver esoclang++ normalmente también busca el camino/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1, y si incluyo esta ruta en elinclude_dirs opción paraExtension en misetup.py script, entonces el módulo de extensión se compila correctamente y funciona. Sin embargo, codificar esta ruta en el script no parece una buena solución ya que este módulo también necesita funcionar en Linux.

Entonces mi pregunta es¿Cómo hago correctamentesetuptools incluir los encabezados requeridos?

Actualización (22/11/2015)

Comosetuptools intenta compilar la extensión, imprime el primer comando que está ejecutando:

gcc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/[username]/miniconda3/include -arch x86_64 -I/Users/[username]/miniconda3/lib/python3.4/site-packages/numpy/core/include -I/Users/[username]/Documents/Code/ar40-aug15/monte_carlo/mcopt -I/usr/local/include -I/Users/[username]/miniconda3/include/python3.4m -c /Users/[username]/Documents/Code/ar40-aug15/monte_carlo/atmc/atmcmodule.cpp -o build/temp.macosx-10.5-x86_64-3.4/Users/[username]/Documents/Code/ar40-aug15/monte_carlo/atmc/atmcmodule.o -std=c++11 -fopenmp -v

Si pego este comando en un terminal y lo ejecuto yo mismo, la extensión se compila correctamente. Entonces sospechosetuptools está modificando algunas variables de entorno que no conozco, o está mintiendo un poco sobre los comandos que realmente está ejecutando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta