C++ 删除setup.py中的所有默认编译器参数

C++ 删除setup.py中的所有默认编译器参数,c++,python,build,distutils,C++,Python,Build,Distutils,我正在用distutils构建一个扩展模块,不幸的是,它用一堆我不想要的参数调用编译器。 具体来说,它使用在/usr/lib64/python2.7/config/Makefile中定义的CFLAGS变量,该变量也由 >>从distutils导入sysconfig >>>打印(sysconfig.get_config_vars()['CFLAGS']) -fno严格别名-O2-g-pipe-Wall-Wp,-D_-FORTIFY_SOURCE=2-FeExceptions-fstack prot

我正在用distutils构建一个扩展模块,不幸的是,它用一堆我不想要的参数调用编译器。 具体来说,它使用在/usr/lib64/python2.7/config/Makefile中定义的
CFLAGS
变量,该变量也由

>>从distutils导入sysconfig
>>>打印(sysconfig.get_config_vars()['CFLAGS'])
-fno严格别名-O2-g-pipe-Wall-Wp,-D_-FORTIFY_SOURCE=2-FeExceptions-fstack protector--param=ssp buffer size=4-m64-mtune=generic-D_-GNU_SOURCE-fPIC-fwrapv-DNDEBUG-O2-g-pipe-Wall-Wp,-D_-FORTIFY_-SOURCE=2-FeExceptions-fstack protector--param=ssp buffer size=4-m64-mtune=generic-D_-GNU-fPIC-fwrapv-
对此给出的答案不起作用;从命令行设置
CFLAGS=“
”会导致使用

-DNDEBUG-O2-g-pipe-Wall-Wp,-D_-FORTIFY_-SOURCE=2-feexceptions-fstack-protector-param=ssp缓冲区大小=4-m64-mtune=generic-D_-GNU-SOURCE-fPIC-fwrapv
好像
OPT
在makefile中是空的,但实际上设置
OPT=“”
没有效果。 有没有办法告诉distutils不要添加这些标志?
我知道我可以通过添加自己的标志来覆盖其中的大部分(使用
-UNDEBUG
手动取消定义宏,如
-DNDEBUG
,使用
-O0
覆盖
-O2
),但是这真的很难看,肯定有更好的方法。

我遇到了同样的问题,设置
OPT
CFLAGS
没有效果。似乎也有这个问题,这是一个问题

这绝对不是一个令人满意的解决方案,也没有您建议的那么难看,但我最终能够禁用这些标志,并通过修改
python/distutils/sysconfig.py
来构建扩展。我在
customize\u编译器
函数中插入了几行代码(从第206行开始安装)

旧的

新的

这至少允许您用自己的参数完全覆盖默认的
OPT
参数。很可能有必要补充那些没有引起问题的论点

例如,对于我自己的项目,我使用

$OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3" CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4" python setup.py build_ext --inplace

我特别想删除-Wp标志,它阻止ccache获得直接命中(请参阅)。
    if 'LDFLAGS' in os.environ:
        ldshared = ldshared + ' ' + os.environ['LDFLAGS']
    if 'OPT' in os.environ:
        opt = os.environ['OPT']
    if 'CFLAGS' in os.environ:
        cflags = opt + ' ' + os.environ['CFLAGS']
        ldshared = ldshared + ' ' + os.environ['CFLAGS']
$OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3" CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4" python setup.py build_ext --inplace