使用 swig 包装时避免“未使用的 typedef”警告

Posted

技术标签:

【中文标题】使用 swig 包装时避免“未使用的 typedef”警告【英文标题】:Avoid "unused typedef" warnings when wrapping with swig 【发布时间】:2015-10-28 14:06:15 【问题描述】:

我使用 swig 作为包装器从我的 python 代码中调用 c++ 函数。我的问题是,生成了很多以下类型的警告,因为我包含了 Boost 库的一部分。

/usr/local/include/boost/math/special_functions/bessel.hpp:744:4: warning: unused typedef
  'boost_static_assert_typedef_747' [-Wunused-local-typedef]

有没有办法避免这种情况?我猜使用

-isystem /usr/local/include

作为标志而不是

-I /usr/local/include

可以解决问题。但是我必须在哪里添加它?后一个选项目前在我的 setup.py 中实现:

#!/usr/bin/env python

"""
setup.py file for SWIG spherical_overlap
"""

from distutils.core import setup, Extension


spherical_overlap_module = Extension('_spherical_overlap',
                       sources=['spherical_overlap_wrap.cxx', 'spherical_overlap.cpp'],
                           swig_opts=['-c++', '-py3'],
                           extra_compile_args =['-lboost_system '],
                           include_dirs = ['/usr/local/include'],
                           )

setup (name = 'spherical_overlap',
       version = '0.1',
       author      = "SWIG Docs",
       description = """Simple swig spherical_overlap from docs""",
       ext_modules = [spherical_overlap_module],
       py_modules = ["spherical_overlap"],
       )

【问题讨论】:

谢谢,这对我来说已经足够了。我将-Wno-unused-local-typedef 添加到extra_compile_args 【参考方案1】:

如果您只想避免警告,可以添加-Wno-unused-local-typedef 选项

【讨论】:

以上是关于使用 swig 包装时避免“未使用的 typedef”警告的主要内容,如果未能解决你的问题,请参考以下文章

在使用许多 SWIG 生成的模块时避免重复的 SWIG 样板

使用 SWIG 包装第 3 方类/数据类型

使用 SWIG 为 Python 包装 C++。 “向量”未声明

使用 SWIG 包装调用另一个对象成员函数的 C++ 类

SWIG 包装器未声明(在此函数中首次使用)

Swig 包装 GLM 库