Spec-Zone.ru › CMake 3.28

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 wrapper-библиотеки.

Изменено в версии 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 (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 или 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 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.28/module/UseSWIG.html

Spec-Zone.ru

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