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иCSharpбиблиотеки-обёртки.Изменено в версии 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_LIBSзначениеON. Если тип не указан, будет использоваться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. Значение по умолчанию —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 или не определено: Применяется поведение по умолчанию.
- Установлено в 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. Значение по умолчанию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/latest/module/UseSWIG.html