如何在SWIG中使用C优化标志?

我正在创建在C中实现的python模块.我正在使用SWIG创建界面.有多种创建扩展的方法,我使用的是“首选方法”,它是通过python的distutils进行的,描述为here.我模块的名称为“ ParseEvents”,要对其进行编译,请运行以下两个命令:

swig -c++ -python ParseEvents.i
python setup.py build_ext --inplace

第一条命令创建一个文件ParseEvents_wrap.cxx

第二条命令使用以下setup.py文件:

from distutils.core import setup, Extension

ParseEvents_module = Extension('_ParseEvents',
                               sources=['ParseEvents_wrap.cxx',],
                               extra_compile_args=["-Wno-deprecated","-O3"],
                               )
setup (name = 'ParseEvents',
              ext_modules = [ParseEvents_module,],
              py_modules = ["ParseEvents"]
              )

问题:我在哪里以及如何指定希望使用-O3编译器标签编译C代码?我猜想它只是在setup.py文件的“ extra_compile_args”部分中,但事实并非如此.当我运行第二个命令(python setup.py build_ext –inplace)时,输出如下:

running build_ext
building '_ParseEvents' extension
creating build
creating build/temp.linux-x86_64-2.6
gcc -pthread -fno-strict-aliasing -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 -fPIC -I/usr/include/python2.4 -c ParseEvents_wrap.cxx -o build/temp.linux-x86_64-2.4/ParseEvents_wrap.o -Wno-deprecated -O3
c++ -pthread -shared build/temp.linux-x86_64-2.4/ParseEvents_wrap.o -o _ParseEvents.so

请注意,-O2和-O3标志都出现在输出的倒数第二行中-我想删除-O2.

解决方法:

GCC文档明确指出:

http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Optimize-Options.html

如果使用多个-O选项(带或不带级别号),则最后一个这样的选项是有效的.

这意味着您的代码将根据需要使用-O3进行编译.无需担心重复的优化标志.

上一篇:使用Swig转换C++到别的编程语言


下一篇:netty入门