我写了一个boost-python扩展,目前正在通过distutils构建.
遗憾的是,我无法在distutils中找到一种方法来构建没有调试符号的扩展,或者在安装时从扩展中剥离符号.
注意:我没有传递--debug或-g来构建distutils的命令(例如,python setup.py build),而我的编译器是Linux上的gcc.
示例setup.py:
from distutils.core import setup
from distutils.extension import Extension
setup(name="myPy",
ext_modules = [
Extension("MyPyExt", ["MyPyExt.cpp"],
libraries = ["boost_python"])
])
Run Code Online (Sandbox Code Playgroud)
您可以使用该选项extra_compile_args将参数传递给最后附加的编译器,从而具有最高优先级.因此,如果包含-g0(无调试符号),则会extra_compile_args覆盖-gDistutils/Setuptools 的设置.在你的例子中:
from distutils.core import setup
from distutils.extension import Extension
setup(
name="myPy",
ext_modules = [Extension(
"MyPyExt",
["MyPyExt.cpp"],
libraries = ["boost_python"],
extra_compile_args = ["-g0"]
)]
)
Run Code Online (Sandbox Code Playgroud)
另请参阅:我如何覆盖setup.py默认使用的编译器(gcc)标志?
我找到了一种方法,但有点笨拙:
from distutils import sysconfig
from distutils.core import setup
import platform
if platform.system() != 'Windows': # When compilinig con visual no -g is added to params
cflags = sysconfig.get_config_var('CFLAGS')
opt = sysconfig.get_config_var('OPT')
sysconfig._config_vars['CFLAGS'] = cflags.replace(' -g ', ' ')
sysconfig._config_vars['OPT'] = opt.replace(' -g ', ' ')
if platform.system() == 'Linux': # In macos there seems not to be -g in LDSHARED
ldshared = sysconfig.get_config_var('LDSHARED')
sysconfig._config_vars['LDSHARED'] = ldshared.replace(' -g ', ' ')
setup(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |