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 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.
Некоторые переменные могут быть установлены для настройки поведения 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.24/module/UseSWIG.html