nk_build_idl_files ()

30 сентября 2026

ID cmake_build_idl

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 для сборки прикладных программ".

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!