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

21 мая 2024

ID cmake_using_sdk_cmake

Для автоматизации процесса подготовки образа решения нужно настроить систему сборки 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

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