Корневой файл CMakeLists.txt
Корневой файл CMakeLists.txt содержит общие инструкции сборки для всего решения.
Корневой файл CMakeLists.txt должен содержать следующие команды:
cmake_minimum_required (VERSION 3.25)– указание минимальной поддерживаемой версииCMake.Для сборки решения на базе KasperskyOS требуется
CMakeверсии не ниже 3.25.Требуемая версия
CMakeпоставляется в составе KasperskyOS Community Edition и используется по умолчанию.include (platform)– подключениеCMake-библиотекиplatform.include (platform/nk)– подключение библиотекиCMakeдля работы с компилятором NK.initialize_platform()– инициализация библиотекиplatform.project_header_default("STANDARD_GNU_17:YES" "STRICT_WARNINGS:NO") – установка флагов компилятора и компоновщика.- [Опционально] Подключение и настройка пакетов для поставляемых системных программ и драйверов, которые необходимо включить в решение:
- Подключение пакета выполняется с помощью команды
find_package(). - После подключения пакета необходимо добавить директории, связанные с этим пакетом, в список директорий поиска с помощью команды
include_directories(). - Для некоторых пакетов также требуется установить значения свойств с помощью команды
set_target_properties().
CMake-описания системных программ и драйверов, поставляемых в составе KasperskyOS Community Edition, а также их экспортируемых переменных и свойств находятся в соответствующих файлах/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/lib/cmake/<имя программы>/<имя программы>Config.cmake - Подключение пакета выполняется с помощью команды
- Сборка инициализирующей программы
Einitдолжна быть выполнена с помощью командыadd_subdirectory(einit). - Все прикладные программы, сборку которых необходимо выполнить, должны быть добавлены с помощью команды
add_subdirectory(<имя директории программы>).
Пример корневого файла CMakeLists.txt
CMakeLists.txt
cmake_minimum_required(VERSION 3.25)
project (example)
# Инициализация библиотеки CMake для KasperskyOS SDK.
include (platform)
initialize_platform ()
# Установка флагов компилятора и компоновщика.
project_header_default ("STANDARD_GNU_17:YES" "STRICT_WARNINGS:NO")
# Подключение пакета, импортирующего компоненты для работы с виртуальной файловой системой.
# Компоненты импортируются из файла: /opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/lib/cmake/vfs/vfsConfig.cmake
find_package (vfs REQUIRED COMPONENTS ENTITY CLIENT_LIB)
include_directories (${vfs_INCLUDE})
# Сборка прикладной программы Hello.
add_subdirectory (hello)
# Сборка инициализирующей программы Einit.
add_subdirectory (einit)