Spec-Zone.ru › CMake 3.12

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()).

Примечание

Переменная SWIG_MODULE_<name>_REAL_NAME будет установлена в имя целевой библиотеки модуля swig. Эта переменная бесполезна, если переменная UseSWIG_TARGET_NAME_PREFERENCE установлена в STANDARD.

Примечание

Для генераторов с несколькими конфигурациями этот модуль не поддерживает файлы конфигурации, специфичные для конфигурации, сгенерированные 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. Другие файлы будут обработаны стандартным образом.

Примечание

Если 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.
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)

Свойства целевой библиотеки могут быть установлены для применения одного и того же конфигурации ко всем входным файлам 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_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_TARGET_NAME_PREFERENCE

Укажите стратегию именования целевого объекта.

  • Установка в LEGACY или отсутствие значения: применяется устаревшая стратегия. Для получения фактического имени целевого объекта необходимо использовать переменную SWIG_MODULE_<name>_REAL_NAME.
  • Установка в STANDARD: имя целевого объекта соответствует заданному имени.
UseSWIG_MODULE_VERSION

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

  • Установка в 1 или отсутствие значения: применяется устаревшее поведение.
  • Установка в 2: применяется новая стратегия обработки вспомогательных файлов: каталог вывода вспомогательных файлов удаляется перед компиляцией интерфейса SWIG.
CMAKE_SWIG_FLAGS
Добавление флагов ко всем вызовам swig.
CMAKE_SWIG_OUTDIR
Укажите, куда записать файлы языка (swig опция -outdir).
SWIG_OUTFILE_DIR
Укажите имя каталога вывода, где будет размещен сгенерированный исходный файл. Если не указано, используется CMAKE_SWIG_OUTDIR.
SWIG_MODULE_<name>_EXTRA_DEPS
Укажите дополнительные зависимости для сгенерированного модуля для <name>.

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

Spec-Zone.ru

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