nk_build_idl_files ()
nk_build_idl_files (<IDL_H_TARGET_NAME>
IDL "<PATH_TO_IDL_FILE1>" ["<PATH_TO_IDL_FILE2>"]...
[NK_MODULE "<PREFIX>"]
[DEPENDS <DEPENDING_TARGET1> [<DEPENDING_TARGET2>]...]
[NK_FLAGS "<PARAM1>" ["<PARAM2>"]...])
Создает CMake-цель для генерации *.idl.h-файлов из формальной спецификации компонента решения.
Параметры:
- <
IDL_H_TARGET_NAME>– имя CMake-цели для генерации*.idl.h-файлов. IDL "<PATH_TO_IDL_FILE1>"["<PATH_TO_IDL_FILE2>"]... – пути к IDL-файлам.Формальная спецификация компонента решения может включать несколько IDL-файлов, в том числе поставляемых в составе KasperskyOS Community Edition SDK. Нужно выполнить либо один вызов CMake-команды
nk_build_idl_files ()с указанием всего набора IDL-файлов (кроме поставляемых, так как*.idl.h-файлы, сгенерированные из них, тоже поставляются), либо несколько вызовов с указанием подмножеств из этого набора. Несколько вызовов требуется, если имена интерфейсов имеют разные префиксы. Например, имена интерфейсовtest.ex.Get,test.hi.Setиtest.Clearимеют разные префиксы и соответствуют разным значениям параметраNK_MODULE, поэтому нельзя указать IDL-файлы для этих интерфейсов в одном вызове CMake-командыnk_build_idl_files ().Порядок, в котором IDL-файлы указаны в параметре, имеет значение, если между этими IDL-файлами есть зависимости. (IDL-файл зависит от другого IDL-файла, если декларация
importв первом IDL-файле содержит имя пакета, описанного во втором IDL-файле.) Необходимо обеспечить, чтобы IDL-файл, от которого зависит другой IDL-файл, был указан до зависимого IDL-файла.Можно указать абсолютные пути или пути относительно директории, в которой находится файл
CMakeLists.txt, вызывающий CMake-командуnk_build_idl_files ().NK_MODULE "<PREFIX>"– значение, полученное в результате исключения имени IDL-файла из имени пакета и замены символа.на символ/.Например, если в IDL-файле имя пакета задано как
Get, нужно указать"", для имени пакетаtest.Getнужно указатьtest, а для имени пакетаtest.ex.Setнужно указатьtest/ex. По умолчанию имеет значениеkl.DEPENDS<DEPENDING_TARGET1>[<DEPENDING_TARGET2>]... – имена CMake-целей, которые должны быть выполнены до генерации*.idl.h-файлов.В этом параметре нужно указать имена CMake-целей, которые создаются CMake-командой
nk_build_idl_files ()для тех IDL-файлов, от которых зависят IDL-файлы, указанные в параметреIDL. (IDL-файл зависит от другого IDL-файла, если декларацияimportв первом IDL-файле содержит имя пакета, описанного во втором IDL-файле.) Это относится только к IDL-файлам, которые не поставляются в составе KasperskyOS Community Edition SDK. Для IDL-файлов, поставляемых в составе KasperskyOS Community Edition SDK, не требуется вызывать CMake-командуnk_build_idl_files (), так как*.idl.h-файлы, сгенерированные из этих IDL-файлов, тоже поставляются.NK_FLAGS "<PARAM1>"["<PARAM2>"]... – параметры генерации транспортного кода.
Примеры вызовов:
nk_build_idl_files (echo_idl_files
NK_MODULE "echo"
IDL "../resources/xdl/echo/Ping.idl"
NK_FLAGS "--extended-errors" "--trace-client-ipc=headers")
nk_build_idl_files (idl_files
NK_MODULE "kl/authenticator"
IDL "${CMAKE_SOURCE_DIR}/resources/Retcode.idl"
"${CMAKE_SOURCE_DIR}/resources/Types.idl"
"${CMAKE_SOURCE_DIR}/resources/SessionManager.idl"
"${CMAKE_SOURCE_DIR}/resources/Authentication.idl"
"${CMAKE_SOURCE_DIR}/resources/ComponentManager.idl"
"${CMAKE_SOURCE_DIR}/resources/UserManager.idl"
NK_FLAGS "--extended-errors")
nk_build_idl_files (idl_files_1
IDL "Block.idl"
NK_MODULE "kl/drivers")
nk_build_idl_files (idl_files_2
IDL "Security.idl"
NK_MODULE "kl/drivers/block"
DEPENDS idl_files_1)
Пример использования см. в "Файлы CMakeLists.txt для сборки прикладных программ".