UseSWIG
Этот файл предоставляет поддержку для SWIG. Предполагается, что модуль FindSWIG уже загружен.
Определяет следующую команду для использования с SWIG:
-
swig_add_library -
Определяет модуль 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()).Примечание
Эта команда создает цель со значением
<name>при установке политикиCMP0078наNEW. В противном случае, устаревшее поведение выберет другое имя цели и сохранит его в переменнойSWIG_MODULE_<name>_REAL_NAME.Примечание
Для генераторов с несколькими конфигурациями этот модуль не поддерживает файлы, специфичные для конфигурации, сгенерированные
SWIG. Все конфигурации сборки должны привести к одному и тому же файлу исходного кода.-
TYPE -
SHARED,MODULEиSTATICимеют ту же семантику, что и для командыadd_library(). Если указанUSE_BUILD_SHARED_LIBS, тип библиотеки будетSTATICилиSHAREDв зависимости от того, равно ли текущее значение переменнойBUILD_SHARED_LIBSзначениюON. Если тип не указан, будет использовано значениеMODULE. -
LANGUAGE -
Указывает язык цели.
-
NO_PROXY -
Предотвращает генерацию слоя обёртки (опция swig
-noproxy). -
OUTPUT_DIR -
Указывает, где разместить файлы, специфичные для языка (опция 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 -
Указывает имя каталога вывода, где будет размещён сгенерированный исходный файл (опция swig -o). Если не указано, используется переменная
SWIG_OUTFILE_DIR. Если ни то, ни другое не указано, используетсяOUTPUT_DIRилиCMAKE_SWIG_OUTDIR. -
SOURCES -
Список исходных файлов для библиотеки. Файлы с расширением
.iбудут идентифицированы как исходные файлы для инструментаSWIG. Другие файлы будут обработаны стандартным способом. Это поведение может быть переопределено путём указания переменной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)
-
INCLUDE_DIRECTORIES, COMPILE_DEFINITIONS and COMPILE_OPTIONS -
Добавить пользовательские флаги к компилятору SWIG и иметь ту же семантику, что и свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_OPTIONS. -
USE_TARGET_INCLUDE_DIRECTORIES -
Если установлено значение
TRUE, содержимое свойства целиINCLUDE_DIRECTORIESбудет передано компиляторуSWIG. Если установлено значениеFALSE, свойство целиINCLUDE_DIRECTORIESбудет проигнорировано. Если не задано, будет рассмотрено свойство целиSWIG_USE_TARGET_INCLUDE_DIRECTORIES. -
GENERATED_INCLUDE_DIRECTORIES, GENERATED_COMPILE_DEFINITIONS and GENERATED_COMPILE_OPTIONS -
Добавить пользовательские флаги к сгенерированному исходному коду C/C++. Они соответственно заполнят свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_OPTIONSсгенерированного файла C/C++. -
DEPENDS -
Указать дополнительные зависимости от файла исходного кода.
-
SWIG_MODULE_NAME -
Указать фактическое имя импорта модуля на языке цели. Это необходимо, если его нельзя автоматически извлечь из исходного кода или оно отличается от имени файла модуля. Например:
set_property(SOURCE mymod.i PROPERTY SWIG_MODULE_NAME mymod_realname)
Примечание
Если политика
CMP0086установлена вNEW,-module <module_name>передаётся компиляторуSWIG.
Свойства целевой библиотеки могут быть установлены для применения той же конфигурации ко всем входным файлам SWIG.
-
SWIG_INCLUDE_DIRECTORIES, SWIG_COMPILE_DEFINITIONS and SWIG_COMPILE_OPTIONS -
Эти свойства будут применены ко всем входным файлам 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 -
Если установлено значение
TRUE, содержимое свойства целиINCLUDE_DIRECTORIESбудет передано компиляторуSWIG. Если установлено значениеFALSEили не определено, свойство целиINCLUDE_DIRECTORIESбудет проигнорировано. Это поведение можно переопределить, указав свойство источникаUSE_TARGET_INCLUDE_DIRECTORIES. -
SWIG_GENERATED_INCLUDE_DIRECTORIES, SWIG_GENERATED_COMPILE_DEFINITIONS and SWIG_GENERATED_COMPILE_OPTIONS -
Эти свойства заполнят соответственно свойства
INCLUDE_DIRECTORIES,COMPILE_DEFINITIONSиCOMPILE_FLAGSвсех сгенерированных файлов C/C++. -
SWIG_DEPENDS -
Добавить зависимости ко всем входным файлам SWIG.
Следующие свойства цели являются выходными свойствами и могут использоваться для получения информации о файлах поддержки, сгенерированных во время компиляции интерфейса SWIG.
-
SWIG_SUPPORT_FILES -
Список свойств вывода списка файлов-обёрток, сгенерированных во время компиляции 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 -
Это свойство вывода указывает директорию, в которой будут сгенерированы файлы поддержки.
Некоторые переменные можно установить для настройки поведения swig_add_library , а также SWIG:
-
UseSWIG_MODULE_VERSION -
Укажите различные варианты поведения для модуля
UseSWIG.- Установка в 1 или отсутствие значения: применяется поведение по умолчанию.
- Установка в 2: применяется новая стратегия обработки файлов поддержки: выходная директория файлов поддержки удаляется перед компиляцией интерфейса
SWIG.
-
CMAKE_SWIG_FLAGS -
Добавить флаги ко всем вызовам swig.
-
CMAKE_SWIG_OUTDIR -
Указать, куда записать файлы, специфичные для языка (вариант swig
-outdir). -
SWIG_OUTFILE_DIR -
Указать имя выходной директории, куда будет помещен сгенерированный исходный файл. Если не указано, используется
CMAKE_SWIG_OUTDIR. -
SWIG_MODULE_<name>_EXTRA_DEPS -
Укажите дополнительные зависимости для сгенерированного модуля для
<name>. -
SWIG_SOURCE_FILE_EXTENSIONS -
Указать список расширений файлов источников, чтобы переопределить стандартное поведение, учитывающее только файлы
.iв качестве источников для инструментаSWIG. Например:set(SWIG_SOURCE_FILE_EXTENSIONS ".i" ".swg")
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.17/module/UseSWIG.html