如何使用SWIG包装许多.h文件并包含任何依赖项
How can I wrap many .h files with SWIG and include any dependencies?
基本上,我有一个庞大的现有代码库,我想使用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只包含您真正想要导出到目标语言的文件,并添加任何缺失的文件以获得您想要的某些功能(如实例化基类等)。你可以随心所欲地说"不,我不想定制",你别无选择。
相关文章:
- 如何从C++中的依赖类型中获得它所依赖的类型
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- C++GTKMM gui循环依赖关系
- 通过ccmake在cmake中缓存依赖选项
- 当基类是依赖类型时,这是一个缺陷吗
- 从不同的附加依赖项中识别等同命名的函数
- 如何在 CMake 中对目标依赖项进行分组?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 为什么内存屏障依赖于变量?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 反转依赖于 end() 的迭代器
- GCC,CMake,预编译标头和维护依赖项
- 使用 'typename' 关键字将非类型视为依赖上下文中的类型
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- Visual Studio是否不知从何而来地添加依赖项