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

Файл CMakeLists.txt для сборки инициализирующей программы Einit должен содержать следующие команды:

Пример передачи программе VfsEntity аргумента "-f fstab" функции main() и переменной окружения ROOTFS со значением ramdisk0,0 / ext2 0:

set_target_properties (${vfs_ENTITY} PROPERTIES

EXTRA_ARGS

" - \"-f\"

- \"fstab\""

EXTRA_ENV

" ROOTFS: ramdisk0,0 / ext2 0")

В результате, при сборке решения, описание аргумента функции main() и значение переменной окружения будут автоматически добавлены в файл init.yaml на этапе обработки макросов шаблона init.yaml.in.

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

CMakeLitsts.txt

project (einit)

# Подключение библиотеки, содержащей скрипты сборки образа решения.

include (platform/image)

# Установка флагов компиляции.

project_header_default ("STANDARD_GNU_11:YES" "STRICT_WARNINGS:NO")

# Настройка программы VFS.

# По умолчанию программе VFS не сопоставляется программа, реализующая блочное устройство.

# Если необходимо использовать блочное устройство, например ata из компонента ata,

# необходимо задать это устройство в переменной ${blkdev_ENTITY}_REPLACEMENT

# Больше информации об экспортированных переменных и свойств программы VFS

# см. в /opt/KasperskyOS-Community-Edition-<version>/sysroot-aarch64-kos/lib/cmake/vfs/vfs-config.cmake

# find_package(ata)

# set_target_properties (${vfs_ENTITY} PROPERTIES ${blkdev_ENTITY}_REPLACEMENT ${ata_ENTITY})

# В простейшем случае не нужно взаимодействовать с диском,

# поэтому мы устанавливаем значение переменной ${blkdev_ENTITY}_REPLACEMENT равным пустой строке

set_target_properties (${vfs_ENTITY} PROPERTIES ${blkdev_ENTITY}_REPLACEMENT "")

# Определение переменной ENTITIES со списком исполняемых файлов программ

# Важно включить все программы, входящие в проект, кроме программы Einit.

# Обратите внимание на то, что имя исполняемого файла программы должно

# совпадать с названием цели, указанной в add_executable() в CMakeLists.txt для сборки этой программы.

set(ENTITIES

${vfs_ENTITY}

Hello_app

)

# Создание цели сборки с именем kos-image, которая является образом решения для аппаратной платформы.

build_kos_hw_image (kos-image

EINIT_ENTITY EinitHw

CONNECTIONS_CFG "src/init.yaml.in" # шаблон файла init.yaml

SECURITY_PSL "src/security.psl.in" # шаблон файла security.psl

IMAGE_FILES ${ENTITIES}

)

# Создание цели сборки с именем kos-qemu-image, которая является образом решения для QEMU.

build_kos_qemu_image (kos-qemu-image

EINIT_ENTITY EinitQemu

CONNECTIONS_CFG "src/init.yaml.in"

SECURITY_PSL "src/security.psl.in"

IMAGE_FILES ${ENTITIES}

)

В начало