Spec-Zone.ru › CMake 3.24

UseSWIG

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

Определяет следующую команду для использования с 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_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)
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 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.

Некоторые переменные могут быть установлены для настройки поведения 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 (Visual Studio 11 2012 и выше) генераторов. Значение по умолчанию — FALSE.

Свойство файла исходного кода USE_SWIG_DEPENDENCIES, если не определено, будет инициализировано значением этой переменной.

Новое в версии 3.21: Добавлена поддержка генератора Xcode.

Новое в версии 3.22: Добавлена поддержка генераторов Visual Studio Generators.

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

Spec-Zone.ru

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