SWIG docs объясняют эти две директивы следующим образом:
-
%include
: "Чтобы включить другой файл в интерфейс SWIG, используйте директиву%include
... В отличие от#include
,%include
включает каждый файл один раз (и не перезагружает файл на последующие объявления%include
). Поэтому нет необходимости использовать include-guards в интерфейсах SWIG." -
%import
: "SWIG предоставляет другую директиву включения файлов с директивой%import
... Цель%import
заключается в сборе определенной информации из другого файла интерфейса SWIG или файла заголовка без фактического создания каких-либо (например, typedef), а также классы С++, которые могут использоваться в качестве базовых классов для деклараций классов в интерфейсе.
Мой вопрос в том, каковы различия между этими двумя директивами и каковы плюсы и минусы использования каждого из них?
P.S. Только для некоторой справочной информации. У меня есть простое расширение С++ - python, которое строит и работает, когда я использую любую из вышеперечисленных директив. Один, однако (%import
) дает меньше предупреждений, когда я вызываю swig -c++ -python my_file.i
.