Add basic template for meta info

This commit is contained in:
Martchus 2018-02-18 20:18:00 +01:00
parent 3fcbaf7fff
commit 486a09c1c5
3 changed files with 53 additions and 2 deletions

View File

@ -120,6 +120,12 @@ if(NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
)
endif()
add_dependencies(install-desktop ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
if(NOT TARGET install-appimage)
add_custom_target(install-appimage
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=appimage -P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
)
endif()
add_dependencies(install-appimage ${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX})
# add install target for stripped binaries
if(NOT TARGET install-binary-strip)
@ -159,8 +165,10 @@ endif()
# find template for *.desktop files
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
@ -204,7 +212,7 @@ function(add_custom_desktop_file
)
endfunction()
# convenience function to add *.desktop file from project meta data
# convenience function to add *.desktop file and meta info from project meta data
function(add_desktop_file)
# compose actions
set(DESKTOP_FILE_ADDITIONAL_ENTRIES "")
@ -217,7 +225,7 @@ function(add_desktop_file)
# create desktop file
add_custom_desktop_file_with_additional_entries(
"${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}"
"${META_ID}"
"${META_APP_NAME}"
"${META_GENERIC_NAME}"
"${META_APP_DESCRIPTION}"
@ -226,6 +234,21 @@ function(add_desktop_file)
"${META_PROJECT_NAME}"
"${DESKTOP_FILE_ADDITIONAL_ENTRIES}"
)
# create appstream desktop file from template
set(META_APP_APPDATA_BODY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/resources/body.appdata.xml")
if(EXISTS META_APP_APPDATA_BODY_FILE)
file(READ "${META_APP_APPIMAGE_BODY_FILE}" META_APP_APPDATA_BODY)
endif()
configure_file(
"${APP_APPSTREAM_TEMPLATE_FILE}"
"${CMAKE_CURRENT_BINARY_DIR}/resources/${META_ID}.appdata.xml"
)
# add install for the appstream file
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${META_ID}.appdata.xml"
DESTINATION "share/metainfo"
COMPONENT appimage
)
endfunction()
set(TARGET_CONFIG_DONE YES)

View File

@ -49,6 +49,20 @@ if(NOT META_VERSION_PATCH)
set(META_VERSION_PATCH 0)
endif()
# set META_ID to META_PROJECT_NAME if not specified
if(NOT META_ID)
set(META_ID "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
endif()
# set bugtracker URL
if(NOT META_APP_BUGTRACKER_URL)
if(META_APP_URL MATCHES "https://(github.com|gitlab.com|.*/gogs|gogs.*)/.*")
set(META_APP_BUGTRACKER_URL "${META_APP_URL}/issues")
else()
set(META_APP_BUGTRACKER_URL "${META_APP_URL}")
endif()
endif()
# provide variables for other projects built as part of the same subdirs project
# to access files from this project
get_directory_property(HAS_PARENT PARENT_DIRECTORY)

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<component type="desktop">
<id>@META_ID@.desktop</id>
<metadata_license>MIT</metadata_license>
<project_license>@META_PROJECT_LICENSE@</project_license>
<name>@META_APP_NAME@</name>
<summary>@META_APP_DESCRIPTION@</summary>
@META_APP_APPDATA_BODY@<url type="homepage">@META_APP_URL@</url>
<url type="bugtracker">@META_APP_BUGTRACKER_URL@</url>
<provides>
<binary>@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@</binary>
</provides>
<developer_name>@META_APP_AUTHOR@</developer_name>
</component>