Spec-Zone.ru › CMake 3.29

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 Generators, если для некоторых источников свойство 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 12 2013 и выше) генераторов. Значение по умолчанию 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 (Visual Studio 12 2013 и выше) генераторов. Значение по умолчанию — 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/v3.29/module/UseSWIG.html

Spec-Zone.ru

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