Use CMakeParseArguments for add_custom_desktop_file()

This commit is contained in:
Martchus 2018-03-07 19:55:09 +01:00
parent e79563569a
commit 716af584c5
1 changed files with 32 additions and 40 deletions

View File

@ -178,17 +178,26 @@ include(TemplateFinder)
find_template_file("desktop" CPP_UTILITIES APP_DESKTOP_TEMPLATE_FILE)
find_template_file("appdata.xml" CPP_UTILITIES APP_APPSTREAM_TEMPLATE_FILE)
# function to add *.desktop files with additional entries FIXME v5: use "include(CMakeParseArguments)" like in
# ReflectionGenerator.cmake
function (add_custom_desktop_file_with_additional_entries
FILE_NAME
DESKTOP_FILE_APP_NAME
DESKTOP_FILE_GENERIC_NAME
DESKTOP_FILE_DESCRIPTION
DESKTOP_FILE_CATEGORIES
DESKTOP_FILE_CMD
DESKTOP_FILE_ICON
DESKTOP_FILE_ADDITIONAL_ENTRIES)
# define generic function to add *.desktop files
include(CMakeParseArguments)
function(add_custom_desktop_file)
# parse arguments
set(ONE_VALUE_ARGS
FILE_NAME
DESKTOP_FILE_APP_NAME
DESKTOP_FILE_GENERIC_NAME
DESKTOP_FILE_DESCRIPTION
DESKTOP_FILE_CATEGORIES
DESKTOP_FILE_CMD
DESKTOP_FILE_ICON
)
set(MULTI_VALUE_ARGS
)
set(OPTIONAL_ARGS
DESKTOP_FILE_ADDITIONAL_ENTRIES
)
cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN})
# create desktop file from template
configure_file("${APP_DESKTOP_TEMPLATE_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/resources/${FILE_NAME}.desktop")
# add install for the desktop file
@ -197,27 +206,8 @@ function (add_custom_desktop_file_with_additional_entries
COMPONENT desktop)
endfunction ()
# function to add *.desktop files
function (add_custom_desktop_file
FILE_NAME
DESKTOP_FILE_APP_NAME
DESKTOP_FILE_GENERIC_NAME
DESKTOP_FILE_DESCRIPTION
DESKTOP_FILE_CATEGORIES
DESKTOP_FILE_CMD
DESKTOP_FILE_ICON)
add_custom_desktop_file_with_additional_entries("${FILE_NAME}"
"${DESKTOP_FILE_APP_NAME}"
"${DESKTOP_FILE_GENERIC_NAME}"
"${DESKTOP_FILE_DESCRIPTION}"
"${DESKTOP_FILE_CATEGORIES}"
"${DESKTOP_FILE_CMD}"
"${DESKTOP_FILE_ICON}"
"")
endfunction ()
# convenience function to add *.desktop file and meta info from project meta data
function (add_desktop_file)
# define function to add *.desktop file and meta info from project meta data
function(add_desktop_file)
# compose actions
set(DESKTOP_FILE_ADDITIONAL_ENTRIES "")
foreach (ACTION_VAR ${META_APP_ACTIONS})
@ -231,14 +221,16 @@ function (add_desktop_file)
endforeach ()
# create desktop file
add_custom_desktop_file_with_additional_entries("${META_ID}"
"${META_APP_NAME}"
"${META_GENERIC_NAME}"
"${META_APP_DESCRIPTION}"
"${META_APP_CATEGORIES}"
"${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
"${META_PROJECT_NAME}"
"${DESKTOP_FILE_ADDITIONAL_ENTRIES}")
add_custom_desktop_file(
FILE_NAME "${META_ID}"
DESKTOP_FILE_APP_NAME "${META_APP_NAME}"
DESKTOP_FILE_GENERIC_NAME "${META_GENERIC_NAME}"
DESKTOP_FILE_DESCRIPTION "${META_APP_DESCRIPTION}"
DESKTOP_FILE_CATEGORIES "${META_APP_CATEGORIES}"
DESKTOP_FILE_CMD "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
DESKTOP_FILE_ICON "${META_PROJECT_NAME}"
DESKTOP_FILE_ADDITIONAL_ENTRIES "${DESKTOP_FILE_ADDITIONAL_ENTRIES}"
)
# read body for appstream desktop file from resources
set(META_APP_APPDATA_BODY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/resources/body.appdata.xml")