Использование CMake из состава KasperskyOS Community Edition SDK
Для автоматизации процесса подготовки образа решения нужно настроить систему сборки CMake. За основу можно взять параметры системы сборки, используемые в примерах из состава KasperskyOS Community Edition SDK.
В файлах CMakeLists.txt используется стандартный синтаксис CMake, а также команды и макросы из библиотек, поставляемых в KasperskyOS Community Edition SDK.
При сборке с помощью CMake по умолчанию применяются флаги -Wall -Wextra -Wconversion -Wsign-conversion -Wformat=2 -Wformat-security -Werror=format-security -fPIE
Рекомендованная структура директорий проекта
При создании решения на базе KasperskyOS рекомендуется использовать следующую структуру директорий в проекте:
- В корне проекта создать корневой файл CMakeLists.txt, содержащий общие инструкции сборки для всего решения.
- Исходный код каждой из разрабатываемых программ следует разместить в отдельной директории, в поддиректории
src. - Создать файлы CMakeLists.txt для сборки каждой прикладной программы в соответствующих директориях.
- Создать отдельную директорию
einit, содержащую поддиректориюsrc, в которую следует поместить описание политики безопасности решения security.psl.Также в эту директорию можно поместить любые другие файлы, которые необходимо включить в образ решения, например файлы настроек initial_install.json и system_services.json для системной программы ServiceManager.
- Создать файл CMakeLists.txt для сборки образа решения.
- Файлы EDL-, CDL- и IDL-описаний следует разместить в директории
resources/xdl/в корне проекта. (EDL-описание можно сгенерировать во время сборки, используя командуgenerate_edl_file().)
Пример структуры директорий проекта
example$ tree
.
├── CMakeLists.txt
├── hello
│ ├── CMakeLists.txt
│ ├── src
│ │ ├── hello.c
├── einit
│ ├── CMakeLists.txt
│ ├── src
│ │ ├── initial_install.json
│ │ ├── security.psl
│ │ ├── system_services.json
├── resources
│ ├──xdl
│ ├── Hello.idl
│ ├── Hello.cdl
│ ├── Hello.edl
Сборка образа решения
Чтобы выполнить сборку образа решения, нужно использовать утилиту cmake (исполняемый файл toolchain/bin/cmake из состава KasperskyOS Community Edition SDK).
Пример сборки:
# Сведения о параметрах запуска утилиты cmake можно
# получить командой cmake --help, а также из
# официальной документации по CMake.
# Перед сборкой необходимо установить значения переменных окружения.
$ source /opt/KasperskyOS-Community-Edition-<platform>-<version>/common/set_env.sh
# Инициализация системы сборки
$ cmake -B build -D CMAKE_TOOLCHAIN_FILE="$KOSCEDIR/toolchain/share/toolchain-*-kos.cmake"
# Сборка
# Чтобы собрать образ решения для QEMU и запустить QEMU с этим образом, нужно
# указать цель sim.
$ cmake --build build --target sim