Spec-Zone.ru › CMake 3.15

UseSWIG

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

Определяет следующую команду для использования с SWIG:

swig_add_library

Определить модуль 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()).

Примечание

Эта команда создаёт целевой объект со специфицированным именем <name>, когда политика CMP0078 установлена в NEW. В противном случае, поведение по умолчанию выберет другое имя целевого объекта и сохранит его в переменной SWIG_MODULE_<name>_REAL_NAME.

Примечание

Для генераторов с несколькими конфигурациями этот модуль не поддерживает файлы, специфичные для конфигурации, генерируемые SWIG. Все конфигурации сборки должны привести к одному и тому же сгенерированному исходному файлу.

TYPE

SHARED, MODULE и STATIC имеют тот же смысл, что и для команды add_library(). Если USE_BUILD_SHARED_LIBS указано, тип библиотеки будет STATIC или SHARED в зависимости от того, равно ли текущее значение переменной BUILD_SHARED_LIBS ON. Если тип не указан, будет использовано значение MODULE.

LANGUAGE

Указывает целевой язык.

NO_PROXY

Запрещает генерацию оберточного слоя (опция swig -noproxy).

OUTPUT_DIR

Указывает, куда записать файлы, специфичные для языка (опция 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

Указывает имя выходной директории, где будет размещён сгенерированный исходный файл (опция swig -o). Если не указано, будет использована переменная SWIG_OUTFILE_DIR. Если ни то, ни другое не указано, используется OUTPUT_DIR или CMAKE_SWIG_OUTDIR.

SOURCES

Список исходных файлов для библиотеки. Файлы с расширением .i будут идентифицированы как исходные файлы для инструмента SWIG. Другие файлы будут обработаны стандартным образом. Это поведение может быть переопределено, указав переменную 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)
INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS and COMPILE_OPTIONS

Добавить пользовательские флаги к компилятору SWIG и иметь тот же смысл, что и свойства INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS и COMPILE_OPTIONS.

USE_TARGET_INCLUDE_DIRECTORIES

Если установлено в TRUE, содержимое свойства целевого объекта INCLUDE_DIRECTORIES будет передано компилятору SWIG. Если установлено в FALSE, свойство целевого объекта INCLUDE_DIRECTORIES будет проигнорировано. Если не установлено, будет рассмотрено свойство целевого объекта SWIG_USE_TARGET_INCLUDE_DIRECTORIES.

GENERATED_INCLUDE_DIRECTORIES, GENERATED_COMPILE_DEFINITIONS and GENERATED_COMPILE_OPTIONS

Добавить пользовательские флаги в сгенерированный исходный код C/C++. Они будут заполнять, соответственно, свойства INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS и COMPILE_OPTIONS сгенерированного файла C/C++.

DEPENDS

Указать дополнительные зависимости для исходного файла.

SWIG_MODULE_NAME

Указать фактическое имя импорта модуля на целевом языке. Это необходимо, если его нельзя автоматически извлечь из исходного кода или оно отличается от имени файла модуля. Например:

set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)

Примечание

Если политика CMP0086 установлена в NEW, -module <module_name> передаётся компилятору SWIG.

Свойства целевой библиотеки могут быть настроены для применения одной и той же конфигурации ко всем входным файлам SWIG.

SWIG_INCLUDE_DIRECTORIES, SWIG_COMPILE_DEFINITIONS and SWIG_COMPILE_OPTIONS

Эти свойства будут применены ко всем входным файлам 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

Если установлено в TRUE, содержимое свойства целевого объекта INCLUDE_DIRECTORIES будет передано компилятору SWIG Если установлено в FALSE или не определено, свойство целевого объекта INCLUDE_DIRECTORIES будет проигнорировано. Это поведение может быть переопределено, указав свойство исходного файла USE_TARGET_INCLUDE_DIRECTORIES.

SWIG_GENERATED_INCLUDE_DIRECTORIES, SWIG_GENERATED_COMPILE_DEFINITIONS and SWIG_GENERATED_COMPILE_OPTIONS

Эти свойства будут заполнять, соответственно, свойства INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS и COMPILE_FLAGS всех сгенерированных файлов C/C++.

SWIG_DEPENDS

Добавить зависимости ко всем входным файлам SWIG.

Следующие свойства целевого объекта являются выходными свойствами и могут быть использованы для получения информации о файлах поддержки, сгенерированных при компиляции интерфейса SWIG.

SWIG_SUPPORT_FILES

Это выходное свойство — список файлов оберток, сгенерированных во время компиляции 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

Это выходное свойство указывает директорию, где будут сгенерированы файлы поддержки.

Некоторые переменные могут быть установлены для настройки поведения swig_add_library так же, как и SWIG.

UseSWIG_MODULE_VERSION

Укажите различные поведения для модуля UseSWIG.

  • Установите в 1 или undefined: применяется поведение по умолчанию.
  • Установите в 2: применяется новая стратегия обработки вспомогательных файлов: каталог вывода вспомогательных файлов удаляется перед компиляцией интерфейса SWIG.
CMAKE_SWIG_FLAGS

Добавить флаги ко всем вызовам swig.

CMAKE_SWIG_OUTDIR

Укажите, куда записать языковые файлы (опция swig -outdir).

SWIG_OUTFILE_DIR

Укажите имя каталога вывода, куда будет помещен сгенерированный исходный файл. Если не указано, используется CMAKE_SWIG_OUTDIR.

SWIG_MODULE_<name>_EXTRA_DEPS

Укажите дополнительные зависимости для сгенерированного модуля для <name>.

SWIG_SOURCE_FILE_EXTENSIONS

Укажите список расширений файлов исходного кода, чтобы переопределить поведение по умолчанию, которое рассматривает только файлы .i в качестве источников для инструмента SWIG. Например:

set(SWIG_SOURCE_FILE_EXTENSIONS ".i" ".swg")

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/module/UseSWIG.html

Spec-Zone.ru

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