nk_build_cdl_files ()

30 сентября 2026

ID cmake_build_cdl

nk_build_cdl_files (<CDL_H_TARGET_NAME>

CDL "<PATH_TO_CDL_FILE1>" ["<PATH_TO_CDL_FILE2>"]...

[NK_MODULE "<PREFIX>"]

[DEPENDS <DEPENDING_TARGET1> [<DEPENDING_TARGET2>]...]

[NK_FLAGS "<PARAM1>" ["<PARAM2>"]...])

Создает CMake-цель для генерации *.cdl.h-файлов из формальной спецификации компонента решения.

Параметры:

  • <CDL_H_TARGET_NAME> – имя CMake-цели для генерации *.cdl.h-файлов.
  • CDL "<PATH_TO_CDL_FILE1>" ["<PATH_TO_CDL_FILE2>"]... – пути к CDL-файлам.

    Формальная спецификация компонента решения может включать несколько CDL-файлов, в том числе поставляемых в составе KasperskyOS Community Edition SDK. Нужно выполнить либо один вызов CMake-команды nk_build_cdl_files () с указанием всего набора CDL-файлов (кроме поставляемых, так как *.cdl.h-файлы, сгенерированные из них, тоже поставляются), либо несколько вызовов с указанием подмножеств из этого набора. Несколько вызовов требуется в следующих случаях:

    • Имена компонентов имеют разные префиксы.

      Например, имена компонентов test.ex.Control, test.hi.View и test.Calc имеют разные префиксы и соответствуют разным значениям параметра NK_MODULE, поэтому нельзя указать CDL-файлы для этих компонентов в одном вызове CMake-команды nk_build_cdl_files ().

    • Между CDL-файлами есть зависимости.

      CDL-файл зависит от другого CDL-файла, если декларация components в первом CDL-файле включает экземпляр компонента, описанного во втором CDL-файле. В этом случае необходимо обеспечить, чтобы CMake-команда nk_build_cdl_files () с указанием второго СDL-файла была выполнена до выполнения этой CMake-команды с указанием первого CDL-файла. Чтобы гарантировать требуемый порядок вызовов CMake-команды nk_build_cdl_files (), нужно использовать параметр DEPENDS.

    Можно указать абсолютные пути или пути относительно директории, в которой находится файл CMakeLists.txt, вызывающий CMake-команду nk_build_cdl_files ().

  • NK_MODULE "<PREFIX>" – значение, полученное в результате исключения имени CDL-файла из имени компонента и замены символа . на символ /.

    Например, если в CDL-файле имя компонента задано как Control, нужно указать "", для имени компонента test.Control нужно указать test, а для имени компонента test.ex.Control нужно указать test/ex. По умолчанию имеет значение kl.

  • DEPENDS <DEPENDING_TARGET1> [<DEPENDING_TARGET2>]... – имена CMake-целей, которые должны быть выполнены до генерации *.cdl.h-файлов.

    В этом параметре нужно указать имена CMake-целей, которые создаются CMake-командой nk_build_cdl_files () и/или CMake-командой nk_build_idl_files () для тех CDL-файлов и/или IDL-файлов, от которых зависят CDL-файлы, указанные в параметре CDL. (CDL-файл зависит от другого CDL-файла, если декларация components в первом CDL-файле включает экземпляр компонента, описанного во втором CDL-файле. CDL-файл зависит от IDL-файла, если декларация endpoints в CDL-файле включает службу с интерфейсом, описанным в IDL-файле.) Это относится только к CDL-, IDL-файлам, которые не поставляются в составе KasperskyOS Community Edition SDK. Для CDL-, IDL-файлов, поставляемых в составе KasperskyOS Community Edition SDK, не требуется вызывать CMake-команды nk_build_cdl_files () и nk_build_idl_files (), так как *.cdl.h-, *.idl.h-файлы, сгенерированные из этих CDL-, IDL-файлов, тоже поставляются.

  • NK_FLAGS "<PARAM1>" ["<PARAM2>"]... – параметры генерации транспортного кода.

Пример вызова:

nk_build_cdl_files (echo_cdl_files

DEPENDS echo_idl_files

NK_MODULE "echo"

CDL "../resources/xdl/echo/Ping.cdl")

Пример использования см. в "Файлы CMakeLists.txt для сборки прикладных программ".

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