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 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.
Переменные 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 11 2012и выше). Значение по умолчанию -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.27/module/UseSWIG.html