我使用 cmake 在 Linux 上成功构建了 python 和我的 C++ 库之间的 SWIG 接口。 (好吧,除了在 Linux 上,模块名称的开头会添加一个额外的 _)。
但是,在 Windows 上,构建失败并显示“一次只能支持一种目标语言(指定了 -python 和 -python)”。我的 SWIG_ADD_LIBRARY 调用很简单:
SWIG_ADD_LIBRARY(pyIntegration 类型共享语言 PYTHON 源 example.i example.h 等)
我的 .i 文件不是很令人兴奋,只是一个模块规范:%module pyIntegration
和一些 typedef(例如 unsigned int uint32_t 等)。
有什么想法吗?看起来很可能是 cmake 错误,但如何最好地解决呢? 非常感谢您的帮助!
请提供使用的 CMake 版本,因为
UseSWIG
内置模块在 3.19 IIRC 中进行了一些返工
您是否在
example.i
文件上设置了某些属性?
应该是:
set_property(SOURCE example.i PROPERTY CPLUSPLUS ON)
swig_add_library(pyIntegration LANGUAGE python SOURCES example.i)
参考:https://cmake.org/cmake/help/latest/module/UseSWIG.html
ps:您可以在这里找到工作示例:https://github.com/Mizux/python-native