80 lines
2.9 KiB
CMake
80 lines
2.9 KiB
CMake
|
## this macro will look for the local applications path
|
||
|
## and write a .desktop file
|
||
|
|
||
|
macro (INSTALL_DESKTOP_LOCAL execflags comment importerpath iconsubpath iconsize additionalText)
|
||
|
if (UNIX)
|
||
|
set(ICON_INSTALL "/usr/share/icons/hicolor/")
|
||
|
|
||
|
set(dir "$ENV{HOME}/.local/share/applications/")
|
||
|
IF(EXISTS ${dir})
|
||
|
set(DESKTOP_FILENAME "${dir}${PROJECTNAME}.desktop")
|
||
|
set(DESKTOP_FILENAME_BUILD "${CMAKE_CURRENT_BINARY_DIR}/${PROJECTNAME}.desktop")
|
||
|
#NOTE: copying desktop file to ${DESKTOP_FILENAME} . \nThis will ensure"
|
||
|
# a nice icon and possibly offer \"${PROJECTNAME}\" to the user"
|
||
|
# on certain file or device events\n Even without make install." (GNOME)
|
||
|
|
||
|
execute_process(
|
||
|
COMMAND whoami
|
||
|
OUTPUT_VARIABLE user OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
if (NOT ${user} STREQUAL "root" )
|
||
|
file(WRITE ${DESKTOP_FILENAME}
|
||
|
"[Desktop Entry]\n"
|
||
|
"Version=1.0\n"
|
||
|
"Name=${PROJECTNAME}\n"
|
||
|
"Comment=${comment}\n"
|
||
|
"Exec=${CMAKE_CURRENT_BINARY_DIR}/${PROJECTNAME}${execflags}\n"
|
||
|
"Icon=${CMAKE_CURRENT_SOURCE_DIR}/${iconsubpath}/${PROJECTNAME}.png\n"
|
||
|
${additionalText})
|
||
|
endif()
|
||
|
|
||
|
file(WRITE ${DESKTOP_FILENAME_BUILD}
|
||
|
"[Desktop Entry]\n"
|
||
|
"Version=1.0\n"
|
||
|
"Name=${PROJECTNAME}\n"
|
||
|
"Comment=${comment}\n"
|
||
|
"Exec=${PROJECTNAME}\n"
|
||
|
"Icon=${ICON_INSTALL}128x128/apps/${PROJECTNAME}.png\n"
|
||
|
${additionalText})
|
||
|
|
||
|
set(DESKTOP_DIR "/usr/share/applications/")
|
||
|
if(EXISTS ${DESKTOP_DIR})
|
||
|
INSTALL(FILES
|
||
|
${DESKTOP_FILENAME_BUILD}
|
||
|
DESTINATION ${DESKTOP_DIR}
|
||
|
RENAME ${PROJECTNAME}.desktop
|
||
|
COMPONENT main
|
||
|
)
|
||
|
else()
|
||
|
message("Warning: not installing desktop file, ${DESKTOP_DIR} not found or changed ?")
|
||
|
endif()
|
||
|
|
||
|
if(EXISTS ${ICON_INSTALL})
|
||
|
#GET_FILENAME_COMPONENT(iconSuffix ${CMAKE_CURRENT_SOURCE_DIR}/${iconsubpath} EXT)
|
||
|
FOREACH (size ${iconsize})
|
||
|
set(ICON_INSTALL "/usr/share/icons/hicolor/${size}/apps/")
|
||
|
INSTALL(FILES
|
||
|
"${CMAKE_CURRENT_SOURCE_DIR}/${iconsubpath}/${PROJECTNAME}${size}.png"
|
||
|
|
||
|
DESTINATION ${ICON_INSTALL}
|
||
|
RENAME "${PROJECTNAME}.png"
|
||
|
COMPONENT main
|
||
|
)
|
||
|
ENDFOREACH(size)
|
||
|
else()
|
||
|
message("Warning: not installing icon for unix, dir ${ICON_INSTALL} not found or changed?")
|
||
|
endif()
|
||
|
|
||
|
set(KDE_ACTIONS "/usr/share/kde4/apps/solid/actions/")
|
||
|
if(EXISTS ${KDE_ACTIONS} AND NOT ${importerpath} STREQUAL "")
|
||
|
INSTALL(FILES
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/${importerpath}
|
||
|
DESTINATION ${KDE_ACTIONS}
|
||
|
COMPONENT main
|
||
|
)
|
||
|
endif()
|
||
|
else()
|
||
|
message("applications path not found")
|
||
|
endif()
|
||
|
endif(UNIX)
|
||
|
endmacro (INSTALL_DESKTOP_LOCAL)
|