【发布时间】:2013-11-15 18:17:09
【问题描述】:
我正在使用 distutils 构建一个扩展模块,不幸的是,它使用一堆我不想要的参数调用编译器。
具体来说,它使用 /usr/lib64/python2.7/config/Makefile 中定义的 CFLAGS 变量,该变量也由
>>> from distutils import sysconfig
>>> print(sysconfig.get_config_vars()['CFLAGS'])
-fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -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 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv
给这个question 的答案不起作用;从命令行设置 CFLAGS="" 会导致 gcc 被调用
-DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv
好像OPT在makefile中是空的,但实际上设置OPT=""没有效果。
有没有办法告诉 distutils 不要添加这些标志?
我知道我可以通过添加我自己的标志来覆盖其中的大部分(手动取消定义宏,如 -DNDEBUG 和 -UNDEBUG 并覆盖 -O2 和 -O0),但这真的很难看,肯定应该有更好的方法。
【问题讨论】:
-
我特别想删除 -Wp 标志,它可以防止 ccache 直接命中(请参阅ccache.samba.org/manual.html#_troubleshooting)。
标签: c++ python build distutils