Spec-Zone.ru › CMake 3.31

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. Значение по умолчанию 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 или 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. Значение по умолчанию 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.31/module/UseSWIG.html

Spec-Zone.ru

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