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

时间:2014-09-04 17:30:09

标签: python c++ include swig

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

1 个答案:

答案 0 :(得分:0)

没有内置的方法可以自动生成.i文件,或者在.i文件夹中填充所有.h以及所有&#34;其他.h以使其正常工作&#34; < / p>

部分原因是&#34;正常工作&#34;是完全随意的:如果A在你要导出的那组标题中,并且A来自B,你是否需要导出B&#34;它才能正常工作&#34;?一点也不。但你可能想要。即使A返回B的实例,您是否需要导出B?不(因此不需要在.i中导入Bh),SWIG返回的对象将是B实例的不透明句柄,虽然您无法调用其中的任何方法,但您将能够将其作为接受B作为参数的函数的参数。

最实用的是编写一个批处理或python脚本来查找你想要的.h的基本集(如果所有在同一个文件夹中的一个内容),复制/粘贴到你的.i,并手动清理所以.i只包含您真正想要导出到目标语言的文件,并添加任何缺少的文件以获得您想要的某些功能(例如实例化基类等)。你可以说&#34;不,我不想要定制&#34;你想要的只是你没有选择。