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

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

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

CMakeLists.txt

project (hello)

# Инструментарий для работы с компилятором NK.

include (platform/nk)

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

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

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

set (LOCAL_MODULE_NAME "example")

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

set (ENTITY_NAME "Hello")

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

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

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

set (ENTITY_IDL_TARGET ${ENTITY_NAME}_idl)

set (ENTITY_CDL_TARGET ${ENTITY_NAME}_cdl)

set (ENTITY_EDL_TARGET ${ENTITY_NAME}_edl)

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

set (APP_TARGET ${ENTITY_NAME}_app)

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

nk_build_idl_files (${ENTITY_IDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

IDL "resources/Hello.idl"

)

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

nk_build_cdl_files (${ENTITY_CDL_TARGET}

IDL_TARGET ${ENTITY_IDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

CDL "resources/Hello.cdl")

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

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

generate_edl_file ( ${ENTITY_NAME}

PREFIX ${LOCAL_MODULE_NAME}

)

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

nk_build_edl_files (${ENTITY_EDL_TARGET}

NK_MODULE ${LOCAL_MODULE_NAME}

EDL ${EDL_FILE}

)

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

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

# Имя программы в init.yaml и security.psl и имя исполняемого файла должны совпадать

set_target_properties (${APP_TARGET} PROPERTIES OUTPUT_NAME ${ENTITY_NAME})

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

target_link_libraries ( ${APP_TARGET}

PUBLIC ${vfs_CLIENT_LIB} # Программа использует файловый ввод/вывод

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

)

В начало