UseSWIG
Этот файл предоставляет поддержку для SWIG. Предполагается, что модуль FindSWIG уже загружен.
Определяет следующую команду для использования с 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_link_libraries -
Связать библиотеки с модулем swig:
swig_link_libraries(<name> <item>...)
Эта команда имеет те же возможности, что и команда
target_link_libraries().Примечание
Если переменная
UseSWIG_TARGET_NAME_PREFERENCEустановлена вSTANDARD, эта команда устарела, и вместо неё необходимо использовать командуtarget_link_libraries().
Свойства файла-источника для файлов модуля обязательно должны быть установлены перед вызовом команды 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 11 2012и выше) генераторов. Значение по умолчанию -FALSE.Новое в версии 3.21: Добавлена поддержка генератора
Xcode.Новое в версии 3.22: Добавлена поддержка генераторов Visual Studio.
-
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могут быть указаны несколько каталогов.
Некоторые переменные могут быть установлены для настройки поведения 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 11 2012и выше) генераторов. Значение по умолчаниюFALSE.Свойство исходного файла
USE_SWIG_DEPENDENCIES, если не определено, будет инициализировано значением этой переменной.Новое в версии 3.21: Добавлена поддержка генератора
Xcode.Новое в версии 3.22: Добавлена поддержка генераторов Visual Studio Generators.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/module/UseSWIG.html