Я хочу скомпилировать расширение C ++ для Python.Проблема в том, что программа C ++ работает только в архитектуре x86_64, но флаги компиляции по умолчанию включают -arch i386.
setup.py выглядит следующим образом:
from distutils.core import setup, Extension
integral_ext = Extension('mod._mod',
sources = ['wrap.cpp'],
extra_compile_args = ['-mmacosx-version-min=10.7', '-std=c++11', '-stdlib=libc++'])
setup(
ext_modules = [integral_ext],
)
Во время компиляции терминал показывает, что команда имеет вид:
/usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c wrap.cpp -o build/temp.macosx-10.6-intel-3.6/wrap.o -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++
Это может произойти из-за некоторого кода static_assertвнутри C ++ требуется x86_64.Я могу успешно скомпилировать его из командной строки после удаления флага -arch i386.Тем не менее, я пишу библиотеку для использования другими, и я хочу упростить ее, чтобы пользователи могли установить ее стандартным способом запуска python3 setup.py install.
Суть в том, что я не могу изменить файл C ++, и я хочу сделать что-то внутри этого setup.py, чтобы он компилировался.Спасибо!