KasperskyOS Community Edition 1.2

Использование CMake из состава KasperskyOS Community Edition

Для автоматизации процесса подготовки образа решения нужно настроить систему сборки CMake. За основу можно взять параметры системы сборки, используемые в примерах из состава KasperskyOS Community Edition.

В файлах CMakeLists.txt используется стандартный синтаксис CMake, а также команды и макросы из библиотек, поставляемых в KasperskyOS Community Edition.

Рекомендованная структура директорий проекта

При создании решения на базе KasperskyOS рекомендуется использовать следующую структуру директорий в проекте:

  • В корне проекта создать корневой файл CMakeLists.txt, содержащий общие инструкции сборки для всего решения.
  • Исходный код каждой из разрабатываемых программ следует разместить в отдельной директории, в поддиректории src.
  • Создать файлы CMakeLists.txt для сборки каждой прикладной программы в соответствующих директориях.
  • Для генерации исходного кода программы Einit следует создать отдельную директорию einit, содержащую поддиректорию src, в которую следует поместить шаблоны init.yaml.in и security.psl.in.

    Также в эту директорию можно поместить любые другие файлы, которые необходимо включить в образ решения.

  • Создать файл CMakeLists.txt для сборки программы Einit в директории einit.
  • Файлы EDL-, CDL- и IDL-описаний следует разместить в директории resources в корне проекта.

Пример структуры директорий проекта

example$ tree . ├── CMakeLists.txt ├── hello │ ├── CMakeLists.txt │ ├── src │ │ ├── hello.c ├── einit │ ├── CMakeLists.txt │ ├── src │ │ ├── init.yaml.in │ │ ├── security.psl.in ├── resources │ ├── Hello.idl │ ├── Hello.cdl │ ├── Hello.edl

Сборка образа решения

Чтобы выполнить сборку образа решения, нужно использовать утилиту cmake (исполняемый файл toolchain/bin/cmake из состава KasperskyOS Community Edition).

Пример скрипта сборки:

build.sh

#!/bin/bash # Скрипт для запуска в корне проекта. # Сведения о параметрах запуска утилиты cmake можно # получить shell-командой cmake --help, а также из # официальной документации по CMake. TARGET="aarch64-kos" SDK_PREFIX="/opt/KasperskyOS-SDK" # Инициализация системы сборки cmake \ -G "Unix Makefiles" \ -D CMAKE_BUILD_TYPE:STRING=Release \ -D CMAKE_TOOLCHAIN_FILE=$SDK_PREFIX/toolchain/share/toolchain-$TARGET.cmake \ -S . \ -B build # Сборка # Чтобы собрать образ решения для QEMU, нужно указать цель, заданную в # параметре NAME CMake-команды build_kos_qemu_image() в файле CMakeLists.txt # для сборки программы Einit. # Чтобы собрать образ решения для аппаратной платформы, нужно указать цель, # заданную в параметре NAME CMake-команды build_kos_hw_image() в файле # CMakeLists.txt для сборки программы Einit. # Чтобы собрать образ решения для QEMU и запустить QEMU с этим образом, нужно # указать цель sim. cmake --build build --target sim

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

Корневой файл CMakeLists.txt

Файлы CMakeLists.txt для сборки прикладных программ

Файл CMakeLists.txt для сборки программы Einit

Шаблон init.yaml.in

Шаблон security.psl.in