UseSWIG
Этот файл предоставляет поддержку для SWIG. Предполагается, что модуль FindSWIG уже загружен.
Команды CMake
Следующая команда определена для использования с SWIG:
-
swig_add_library -
Новая в версии 3.8.
Определяет модуль swig с заданным именем и указанным языком:
swig_add_library(<name> [TYPE <SHARED|MODULE|STATIC|USE_BUILD_SHARED_LIBS>] LANGUAGE <language> [NO_PROXY] [OUTPUT_DIR <directory>] [OUTFILE_DIR <directory>] SOURCES <file>... )Цели, созданные с помощью команды
swig_add_libraryимеют те же возможности, что и цели, созданные с помощью командыadd_library(), поэтому эти цели могут быть использованы с любой командой, ожидающей цель (например,target_link_libraries()).Изменено в версии 3.13: Эта команда создаёт цель со специфицированным
<name>когда политикаCMP0078установлена на значениеNEW. В противном случае, старое поведение выберет другое имя цели и сохранит его в переменнойSWIG_MODULE_<name>_REAL_NAME.Изменено в версии 3.15: Альтернативное имя библиотеки (установленное, например, с помощью свойства
OUTPUT_NAME) будет передано вPythonиCSharpwrapper-библиотеки.Изменено в версии 3.21: Сгенерированная библиотека использует стандартные соглашения об именовании для
CSharpязыка, когда политикаCMP0122установлена на значениеNEW. В противном случае применяется поведение по умолчанию.Примечание
Для генераторов с несколькими конфигурациями этот модуль не поддерживает файлы, специфичные для конфигурации, созданные
SWIG. Все конфигурации сборки должны привести к одному и тому же сгенерированному файлу исходного кода.Примечание
Для генераторов Makefile, если для некоторых источников свойство
USE_SWIG_DEPENDENCIESимеет значениеFALSE,swig_add_libraryне отслеживает зависимости файлов, поэтому для целей, которым требуется существование файлов, сгенерированных<name>_swig_compilation, требуется настраиваемая цельswig. Другие генераторы могут зависеть от файлов исходного кода, которые будут сгенерированы SWIG.-
TYPE -
SHARED,MODULEиSTATICимеют такое же семантическое значение, как и для командыadd_library(). ЕслиUSE_BUILD_SHARED_LIBSуказано, тип библиотеки будетSTATICилиSHAREDв зависимости от того, равно ли текущее значение переменнойBUILD_SHARED_LIBSON. Если тип не указан, будет использоватьсяMODULE. -
LANGUAGE -
Укажите целевой язык.
Новая в версии 3.1: Поддержка языков Go и Lua.
Новая в версии 3.2: Поддержка языка R.
Новая в версии 3.18: Поддержка языка Fortran.
-
NO_PROXY -
Новая в версии 3.12.
Запретить генерацию слоя обёртки (опция swig
-noproxy). -
OUTPUT_DIR -
Новая в версии 3.12.
Указать, куда записать файлы, специфичные для языка (опция swig
-outdir). Если не указано, будет использоваться переменнаяCMAKE_SWIG_OUTDIR. Если ни то, ни другое не указано, по умолчанию зависит от значения переменнойUseSWIG_MODULE_VERSIONследующим образом:- Если
UseSWIG_MODULE_VERSIONравно 1 или не определено, вывод записывается в директориюCMAKE_CURRENT_BINARY_DIR. - Если
UseSWIG_MODULE_VERSIONравно 2, будет использоваться отдельная директория. Путь к этой директории можно получить из свойства целиSWIG_SUPPORT_FILES_DIRECTORY.
- Если
-
OUTFILE_DIR -
Новая в версии 3.12.
Указать имя выходной директории, куда будут помещены сгенерированные файлы исходного кода (опция swig
-o). Если не указано, будет использоваться переменнаяSWIG_OUTFILE_DIR. Если ни то, ни другое не указано, используетсяOUTPUT_DIRилиCMAKE_SWIG_OUTDIRвместо этого. -
SOURCES -
Список источников для библиотеки. Файлы с расширением
.iбудут определены как источники для инструментаSWIG. Другие файлы будут обработаны стандартным образом.Новая в версии 3.14: Это поведение может быть переопределено, указав переменную
SWIG_SOURCE_FILE_EXTENSIONS.
Примечание
Если
UseSWIG_MODULE_VERSIONустановлено в 2, настоятельно рекомендуется использовать отдельную директорию, уникальную для цели, когда указана опцияOUTPUT_DIRили переменнаяCMAKE_SWIG_OUTDIR. Содержимое выходной директории удаляется в процессе сборки цели, поэтому, чтобы избежать конфликтов между целями или потери других важных файлов, каждая цель должна иметь свою отдельную выходную директорию. -
Свойства файлов исходного кода
Свойства файлов исходного кода в модульных файлах должны быть установлены до вызова команды swig_add_library для указания специального поведения SWIG и обеспечения того, что сгенерированные файлы получат необходимые настройки.
-
CPLUSPLUS -
Вызов SWIG в режиме c++. Например:
set_property(SOURCE mymod.i PROPERTY CPLUSPLUS ON) swig_add_library(mymod LANGUAGE python SOURCES mymod.i)
-
SWIG_FLAGS -
Устарело начиная с версии 3.12: Заменено на свойства с более тонким управлением.
Передача пользовательских флагов исполняемому файлу SWIG.
-
INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS and COMPILE_OPTIONS -
Введено в версии 3.12.
Добавление пользовательских флагов к компилятору SWIG с той же семантикой, что и свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_OPTIONS. -
USE_TARGET_INCLUDE_DIRECTORIES -
Введено в версии 3.13.
Если установлено значение
TRUE, содержимое целевого свойстваINCLUDE_DIRECTORIESбудет передано компиляторуSWIG. Если установлено значениеFALSE, целевое свойствоINCLUDE_DIRECTORIESбудет проигнорировано. Если не установлено, будет использоваться целевое свойствоSWIG_USE_TARGET_INCLUDE_DIRECTORIES. -
GENERATED_INCLUDE_DIRECTORIES, GENERATED_COMPILE_DEFINITIONS and GENERATED_COMPILE_OPTIONS -
Введено в версии 3.12.
Добавление пользовательских флагов к сгенерированному исходному коду C/C++. Они соответственно заполнят свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_OPTIONSсгенерированного файла C/C++. -
DEPENDS -
Введено в версии 3.12.
Укажите дополнительные зависимости от исходного файла.
-
USE_SWIG_DEPENDENCIES -
Введено в версии 3.20.
Если установлено значение
TRUE, неявные зависимости генерируются самим инструментомswig. Это свойство имеет смысл только для генераторов Makefile, Ninja,Xcodeи Visual Studio (Visual Studio 12 2013и выше). Значение по умолчаниюFALSE.Введено в версии 3.21: Добавлена поддержка генератора
Xcode.Введено в версии 3.22: Добавлена поддержка генераторов Visual Studio Generators.
-
SWIG_MODULE_NAME -
Укажите фактическое имя импорта модуля на целевом языке. Это необходимо, если его невозможно автоматически извлечь из исходного кода или если оно отличается от имени файла модуля. Например:
set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
Изменено в версии 3.14: Если политика
CMP0086установлена в значениеNEW,-module <module_name>передается компиляторуSWIG. -
OUTPUT_DIR -
Введено в версии 3.19.
Укажите место, куда будут записаны файлы, специфичные для языка (опция swig
-outdir), для рассматриваемого исходного файла. Если не указано, применяются другие способы определения выходного каталога (см. опциюOUTPUT_DIRкомандыswig_add_library()). -
OUTFILE_DIR -
Введено в версии 3.19.
Укажите каталог вывода, куда будет помещён сгенерированный исходный файл (опция swig
-o), для рассматриваемого исходного файла. Если не указано, используется свойство источникаOUTPUT_DIR. Если ни то, ни другое не указано, применяются другие способы определения каталога выходного файла (см. опциюOUTFILE_DIRкомандыswig_add_library()).
Свойства на Целях
Свойства целевой библиотеки можно установить, чтобы применить одну и ту же конфигурацию ко всем входным файлам SWIG.
-
SWIG_INCLUDE_DIRECTORIES, SWIG_COMPILE_DEFINITIONS and SWIG_COMPILE_OPTIONS -
Введено в версии 3.12.
Эти свойства будут применяться ко всем входным файлам SWIG и имеют ту же семантику, что и целевые свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_OPTIONS.set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD) swig_add_library(mymod LANGUAGE python SOURCES mymod.i) set_property(TARGET mymod PROPERTY SWIG_COMPILE_DEFINITIONS MY_DEF1 MY_DEF2) set_property(TARGET mymod PROPERTY SWIG_COMPILE_OPTIONS -bla -blb)
-
SWIG_USE_TARGET_INCLUDE_DIRECTORIES -
Введено в версии 3.13.
Если установлено значение
TRUE, содержимое целевого свойстваINCLUDE_DIRECTORIESбудет передано компиляторуSWIG. Если установлено значениеFALSEили не определено, целевое свойствоINCLUDE_DIRECTORIESбудет проигнорировано. Это поведение можно переопределить, указав свойство источникаUSE_TARGET_INCLUDE_DIRECTORIES. -
SWIG_GENERATED_INCLUDE_DIRECTORIES, SWIG_GENERATED_COMPILE_DEFINITIONS and SWIG_GENERATED_COMPILE_OPTIONS -
Введено в версии 3.12.
Эти свойства будут заполнять соответственно свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_FLAGSвсех сгенерированных файлов C/C++. -
SWIG_DEPENDS -
Введено в версии 3.12.
Добавление зависимостей ко всем входным файлам SWIG.
Только для чтения Свойства Целей
Следующие свойства целей являются свойствами вывода и могут использоваться для получения информации о файлах поддержки, сгенерированных во время компиляции интерфейса SWIG.
-
SWIG_SUPPORT_FILES -
Введено в версии 3.12.
Это свойство вывода, список файлов-оберток, сгенерированных во время компиляции SWIG.
set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD) swig_add_library(mymod LANGUAGE python SOURCES mymod.i) get_property(support_files TARGET mymod PROPERTY SWIG_SUPPORT_FILES)
Примечание
Перечислены только самые важные файлы поддержки. В случае использования некоторых расширенных функций
SWIG(например,%template), связанные файлы поддержки могут быть не перечислены. Предпочтительнее использовать свойствоSWIG_SUPPORT_FILES_DIRECTORYдля работы с файлами поддержки. -
SWIG_SUPPORT_FILES_DIRECTORY -
Введено в версии 3.12.
Это свойство вывода указывает каталог, куда будут сгенерированы файлы поддержки.
Примечание
Когда свойство источника
OUTPUT_DIRопределено, несколько каталогов могут быть указаны как частьSWIG_SUPPORT_FILES_DIRECTORY.
Переменные CMake
Некоторые переменные могут быть установлены для настройки поведения swig_add_library , а также SWIG:
-
UseSWIG_MODULE_VERSION -
Новое в версии 3.12.
Укажите разные поведения для модуля
UseSWIG.- Установка в 1 или undefined: применяется поведение по умолчанию.
- Установка в 2: применяется новая стратегия относительно файлов поддержки: директория вывода файлов поддержки очищается перед компиляцией интерфейса
SWIG.
-
CMAKE_SWIG_FLAGS -
Добавить флаги ко всем вызовам swig.
-
CMAKE_SWIG_OUTDIR -
Укажите, куда записать файлы, специфичные для языка (опция swig
-outdir). -
SWIG_OUTFILE_DIR -
Новое в версии 3.8.
Укажите имя директории вывода, куда будет помещён сгенерированный исходный файл. Если не указано, используется
CMAKE_SWIG_OUTDIR. -
SWIG_MODULE_<name>_EXTRA_DEPS -
Укажите дополнительные зависимости для сгенерированного модуля для
<name>. -
SWIG_SOURCE_FILE_EXTENSIONS -
Новое в версии 3.14.
Укажите список расширений файлов исходного кода, чтобы переопределить поведение по умолчанию, учитывающее только файлы
.iв качестве исходных файлов для инструментаSWIG. Например:set(SWIG_SOURCE_FILE_EXTENSIONS ".i" ".swg")
-
SWIG_USE_SWIG_DEPENDENCIES -
Новое в версии 3.20.
Если установлено значение
TRUE, неявные зависимости генерируются самим инструментомswig. Эта переменная имеет смысл только для генераторов Makefile, Ninja,Xcodeи Visual Studio (Visual Studio 12 2013и выше) генераторов. Значение по умолчаниюFALSE.Свойство файла исходного кода
USE_SWIG_DEPENDENCIES, если не определено, будет инициализировано значением этой переменной.Новое в версии 3.21: Добавлена поддержка генератора
Xcode.Новое в версии 3.22: Добавлена поддержка генераторов Visual Studio Generators.
Устаревшие команды
-
swig_link_libraries -
Устарело начиная с версии 3.13: Используйте
target_link_libraries()с именем стандартного целевого объекта или с${SWIG_MODULE_<name>_REAL_NAME}для устаревшего именования целевого объекта.Связь библиотек с модулем swig:
swig_link_libraries(<name> <item>...)
Эта команда обладает теми же возможностями, что и команда
target_link_libraries().Примечание
Когда политика
CMP0078установлена вNEW,swig_add_library()создаёт стандартный целевой объект со специфицированным<name>иtarget_link_libraries()должен использоваться вместо этой команды.С устаревшим поведением (когда
CMP0078установлено вOLDи переменнаяUseSWIG_TARGET_NAME_PREFERENCEустановлена в"LEGACY", или в версиях CMake до 3.12), предпочтительнее использоватьtarget_link_libraries(${SWIG_MODULE_<name>_REAL_NAME} ...)вместо этой команды.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/module/UseSWIG.html