Файлы CMakeLists.txt для сборки прикладных программ
Файл CMakeLists.txt для сборки прикладной программы должен содержать следующие команды:
- EDL-описание класса процессов для программы можно сгенерировать, используя команду
generate_edl_file(). - Если программа предоставляет службы, используя механизм IPC, необходимо сгенерировать транспортный код:
- idl.h-файлы генерируются командой
nk_build_idl_files() - cdl.h-файлы генерируются командой
nk_build_cdl_files() - edl.h-файлы генерируются командой
nk_build_edl_files()
- idl.h-файлы генерируются командой
add_executable (<имя программы> "<путь к файлу исходного кода программы>")– добавление цели для сборки программы.add_dependencies (<имя программы> <имя цели сборки edl.h файла>) – добавление зависимости сборки программы от генерации edl.h-файла.target_link_libraries (<имя программы> <список библиотек>)– определяет библиотеки, с которыми необходимо скомпоновать программу при сборке.Например, если программа использует файловый или сетевой ввод/вывод, то она должна быть скомпонована с транспортной библиотекой
vfs::client.CMake-описания системных программ и драйверов, поставляемых в составе KasperskyOS Community Edition SDK, а также их экспортированных переменных и свойств находятся в соответствующих файлах/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/lib/cmake/<имя программы>/<имя программы>Config.cmake- Команды CMake-библиотеки kpa для упаковки прикладной программы в KPA-пакет.
Пример файла CMakeLists.txt для сборки простой прикладной программы
CMakeLists.txt
include (platform/kpa)
# Задаем имя программы.
set (PROGRAM_NAME Hello)
set (PACKAGE ${PROGRAM_NAME}.kpa)
# Добавляем цель сборки edl.h-файла.
nk_build_edl_files (${PROGRAM_NAME}_edl_files
NK_MODULE "hello"
EDL "${NK_RESOURCES}/hello/Hello.edl")
# Определяем цель для сборки программы.
add_executable (${PROGRAM_NAME} "src/hello.c")
add_dependencies (${PROGRAM_NAME} ${PROGRAM_NAME}_edl_files)
# Упаковка прикладной программы в KPA-пакет
add_kpa_package (${PACKAGE} ID ${PROGRAM_NAME} MANIFEST_V "2")
add_kpa_component (${PACKAGE} RESOURCE ${PROGRAM_NAME} TYPE "bin")
add_kpa_component (${PACKAGE}
RUN_CONFIGURATION "default"
TYPE "application"
NAME "${PROGRAM_NAME}"
EIID "hello.${PROGRAM_NAME}"
PATH "bin/${PROGRAM_NAME}"
NO_AUTO_VFS_CONNECTION)