Spec-Zone.ru › CMake 3.26

UseSWIG

Этот файл предоставляет поддержку для SWIG. Предполагается, что модуль FindSWIG уже загружен.

  • Команды CMake
  • Свойства исходных файлов
  • Свойства целей

    • Только для чтения свойства целей
  • Переменные CMake
  • Устаревшие команды

Команды 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 (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.

Переменные 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 (Visual Studio 11 2012 и выше) генераторов. Значение по умолчанию 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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/module/UseSWIG.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API