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.Примечание
Для генераторов с несколькими конфигурациями этот модуль не поддерживает файлы, специфичные для конфигураций, сгенерированные
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_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. Значение по умолчаниюFALSE. -
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 или не определено: применяется поведение по умолчанию.
- Установлено в 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. Значение по умолчаниюFALSE.Свойство исходного файла
USE_SWIG_DEPENDENCIES, если не определено, будет инициализировано значением этой переменной.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/module/UseSWIG.html