Python 如何使用SWIG包装许多.h文件并包含任何依赖项?

Python 如何使用SWIG包装许多.h文件并包含任何依赖项?,python,c++,include,swig,Python,C++,Include,Swig,基本上,我有一个很大的现有代码库,我想使用SWIG将所有的.h文件包装到一个特定的目录中。这些.h文件中的许多类继承自目录树中其他地方定义的其他类,手工跟踪它们中的每一个将是一件痛苦的事情。有没有办法让SWIG自动包含这些文件,或者至少自动创建.i文件?我不想在我自己的代码(比如标准库)之外包装任何类,但是如果我使用-importall选项,这些类最终会被包括在内。没有内置的方法自动生成.I文件,或者在文件夹中用all.h和所有“other.h”填充.I以使其正常工作 部分原因是“正常工作”完全

基本上,我有一个很大的现有代码库,我想使用SWIG将所有的.h文件包装到一个特定的目录中。这些.h文件中的许多类继承自目录树中其他地方定义的其他类,手工跟踪它们中的每一个将是一件痛苦的事情。有没有办法让SWIG自动包含这些文件,或者至少自动创建.i文件?我不想在我自己的代码(比如标准库)之外包装任何类,但是如果我使用
-importall
选项,这些类最终会被包括在内。

没有内置的方法自动生成.I文件,或者在文件夹中用all.h和所有“other.h”填充.I以使其正常工作

部分原因是“正常工作”完全是任意的:如果A位于要导出的头集中,并且A派生自B,是否需要导出B“以使其正常工作”?一点也不。但你可能想。即使A返回B的一个实例,您是否需要导出B?不需要(因此不需要在.i中导入B.h),SWIG返回的对象将是B实例的不透明句柄,尽管您无法对其调用任何方法,但您可以将其作为参数提供给接受B作为参数的函数


最实用的方法是编写一个批处理或python脚本来查找所需的.h的基集(如果所有文件都在同一个文件夹中,则为一行代码),将其复制/粘贴到.i中,然后手动清理。i只包含您真正想要导出到目标语言的文件,并添加任何缺少的文件以获得您想要的某些功能(如实例化基类等). 你可以说“不,我不想定制”你想要的一切,你别无选择

好问题。我希望您提出的问题有一个很好的解决方案。正如我所说的,我希望导出给定头文件集中的所有内容,并且只导出它们正常工作所需的任何其他内容。我不能手动清理步骤;静态.i文件将导入所有必要的文件,或者.i文件将完全自动生成。“让它们正常工作”是任意的:我认为您误解了SWIG的工作原理。我已经更新了这篇文章,我希望它更清楚。如果A从B派生,而您只导出A,SWIG会包装从B继承的成员函数吗?我对此表示怀疑。