From 716af584c59dcc44c4d1d61d7e8fb534f2e1a8f0 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 7 Mar 2018 19:55:09 +0100 Subject: [PATCH] Use CMakeParseArguments for add_custom_desktop_file() --- cmake/modules/AppTarget.cmake | 72 ++++++++++++++++------------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/cmake/modules/AppTarget.cmake b/cmake/modules/AppTarget.cmake index da3f25c..0e2de1d 100644 --- a/cmake/modules/AppTarget.cmake +++ b/cmake/modules/AppTarget.cmake @@ -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")