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