KasperskyOS Community Edition 1.3

Генерация транспортного кода для разработки на языке C++

Для генерации транспортных прокси-объектов и стабов с помощью генератора nkppmeta при сборке решения используются CMake-команды add_nk_idl(), add_nk_cdl() и add_nk_edl().

В этом разделе

add_nk_idl()

add_nk_cdl()

add_nk_edl()

В начало
[Topic cmake_cpp]

add_nk_idl()

Команда объявлена в файле /opt/KasperskyOS-Community-Edition-<version>/toolchain/share/cmake/Modules/platform/nk2.cmake.

add_nk_idl(NAME IDL_FILE ...)

Команда создает CMake-цель для генерации заголовочного файла *.idl.cpp.h для заданного IDL-файла при помощи компилятора nkppmeta. Также команда создает библиотеку, содержащую транспортный код для заданного интерфейса. Для компоновки с этой библиотекой необходимо использовать команду bind_nk_targets().

Генерируемые заголовочные файлы содержат представление на языке C++ для интерфейса и типов данных, описанных в IDL-файле, а также методы, необходимые для использования прокси-объектов и стабов.

Параметры:

  • NAME – имя CMake-цели. Обязательный параметр.
  • IDL_FILE – путь к IDL-файлу. Обязательный параметр.
  • NK_MODULE – в этом параметре необходимо указать имя пакета, исключив из него имя IDL-файла. Например, если в IDL-описании имя пакета задано как kl.core.NameServer, то в параметре NK_MODULE необходимо передать значение kl.core.
  • LANG – в этом параметре необходимо указать значение CXX.

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

add_nk_idl (ANIMAL_IDL "${CMAKE_SOURCE_DIR}/resources/Animal.idl" NK_MODULE "example" LANG "CXX")
В начало
[Topic add_nk_idl]

add_nk_cdl()

Команда объявлена в файле /opt/KasperskyOS-Community-Edition-<version>/toolchain/share/cmake/Modules/platform/nk2.cmake.

add_nk_cdl(NAME CDL_FILE ...)

Команда создает CMake-цель для генерации файла *.cdl.cpp.h для заданного CDL-файла при помощи компилятора nkppmeta. Команда также создает библиотеку, содержащую транспортный код для заданного компонента. Для компоновки с этой библиотекой необходимо использовать команду bind_nk_targets().

Файл *.cdl.cpp.h содержит дерево вложенных компонентов и служб, предоставляемых компонентом, описанным в CDL-файле.

Параметры:

  • NAME – имя CMake-цели. Обязательный параметр.
  • CDL_FILE – путь к CDL-файлу. Обязательный параметр.
  • NK_MODULE – в этом параметре необходимо указать имя компонента, исключив из него имя CDL-файла. Например, если в CDL-описании имя компонента задано как kl.core.NameServer, то в параметре NK_MODULE необходимо передать значение kl.core.
  • LANG – в этом параметре необходимо указать значение CXX.

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

add_nk_cdl (CAT_CDL "${CMAKE_SOURCE_DIR}/resources/Cat.cdl" NK_MODULE "example" LANG "CXX")
В начало
[Topic add_nk_cdl]

add_nk_edl()

Команда объявлена в файле /opt/KasperskyOS-Community-Edition-<version>/toolchain/share/cmake/Modules/platform/nk2.cmake.

add_nk_edl(NAME EDL_FILE ...)

Команда создает CMake-цель для генерации файла *.edl.cpp.h для заданного EDL-файла при помощи компилятора nkppmeta. Также команда создает библиотеку, содержащую транспортный код для серверной или клиентской программы. Для компоновки с этой библиотекой необходимо использовать команду bind_nk_targets().

Файл *.edl.cpp.h содержит дерево вложенных компонентов и служб, предоставляемых классом процессов, описанным в EDL-файле.

Параметры:

  • NAME – имя CMake-цели. Обязательный параметр.
  • EDL_FILE – путь к EDL-файлу. Обязательный параметр.
  • NK_MODULE – в этом параметре необходимо указать имя класса процессов, исключив из него имя EDL-файла. Например, если в EDL-описании имя класса процессов задано как kl.core.NameServer, то в параметре NK_MODULE необходимо передать значение kl.core.
  • LANG – в этом параметре необходимо указать значение CXX.

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

add_nk_edl (SERVER_EDL "${CMAKE_SOURCE_DIR}/resources/Server.edl" NK_MODULE "example" LANG "CXX")
В начало
[Topic add_nk_edl]