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

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

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

CMakeLists.txt

project (hello)

# Подключение CMake-библиотеки nk для работы с компилятором NK (nk-gen-c).

include (platform/nk)

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

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

# Задаем имя проекта, в который входит программа.

set (LOCAL_MODULE_NAME "example")

# Задаем имя программы.

set (TASK_NAME "Hello")

# Обратите внимание на содержание шаблонов init.yaml.in и security.psl.in

# В них имена программ задаются как ${LOCAL_MODULE_NAME}.${TASK_NAME}

# Задаем цели, которые будут использованы для создания генерируемых файлов программы.

set (TASK_IDL_TARGET ${TASK_NAME}_idl)

set (TASK_CDL_TARGET ${TASK_NAME}_cdl)

set (TASK_EDL_TARGET ${TASK_NAME}_edl)

# Добавляем цель сборки idl.h-файла.

nk_build_idl_files (${TASK_IDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

IDL "../resources/Hello.idl"

)

# Добавляем цель сборки cdl.h-файла.

nk_build_cdl_files (${TASK_CDL_TARGET}

IDL_TARGET ${TASK_IDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

CDL "../resources/Hello.cdl"

)

# Добавляем цель сборки EDL-файла. Переменная EDL_FILE экспортируется

# и содержит путь до сгенерированного EDL-файла.

generate_edl_file (${TASK_NAME}

PREFIX ${LOCAL_MODULE_NAME}

)

# Добавляем цель сборки edl.h-файла.

nk_build_edl_files (${TASK_EDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

EDL ${EDL_FILE}

)

# Определяем цель для сборки программы.

add_executable (${TASK_NAME} "src/hello.c")

# Библиотеки, с которыми программа компонуется при сборке.

target_link_libraries (${TASK_NAME}

PUBLIC vfs::client # Программа использует файловый ввод/вывод

# и должна быть подключена как клиент к VFS

)

# Добавление к цели Hello зависимости от цели Hello_edl.

# Генерация edl.h-файла должна произойти ранее сборки цели Hello.

add_dependencies (${TASK_NAME} ${TASK_EDL_TARGET})

В начало