强制setup.py使用我的自定义编译器

8 投票
1 回答
8913 浏览
提问于 2025-04-19 02:40

我正在尝试让 setup.py 使用 macports 版本的 gcc 来编译 C++ 代码。问题是我想构建的代码不支持 mac 默认的 clang,而在较新的 macOS 版本中,clang 是默认的 gcc。

我创建了一个自定义的 setup.cfg 文件。

setup.cfg

[build_ext] 
compiler=gcc-mp-4.8

但是当我运行 python setup.py build_ext 时,出现了以下错误:

正在运行 build_ext

error: don't know how to compile C/C++ code on platform 'posix' with 'gcc-mp-4.8' compiler

我该如何让 setup.py 使用我自己的 gcc 版本 gcc-mp-4.8 呢?

目前 setup.py 默认使用 /usr/bin/clang,当我输入 gcc -v 时,它显示正在使用 gcc 版本 4.8.2。

1 个回答

11

根据我的理解,--compiler 这个选项需要你输入 "unix"、"msvc"、"cygwin"、"mingw32"、"bcpp" 或 "emx" 这些值。你也可以通过设置一个叫做 CC 的环境变量来指定编译器的名称。

setup.py 文件里,你可以尝试设置 os.environ

os.environ["CC"] = "gcc-4.8"
os.environ["CXX"] = "gcc-4.8"

或者直接这样做:

CC=gcc

使用 g++ 也是这样:

os.environ["CXX"] = "g++-4.7"

撰写回答