UseSWIG
Этот файл предоставляет поддержку для SWIG. Предполагается, что модуль FindSWIG уже загружен.
Команды 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иCSharpwrapper-библиотеки.Изменено в версии 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_LIBSON. Если тип не указан, будет использоваться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.30/module/UseSWIG.html