diff --git a/cmake/modules/WindowsResources.cmake b/cmake/modules/WindowsResources.cmake index 44d8a76..a0524cc 100644 --- a/cmake/modules/WindowsResources.cmake +++ b/cmake/modules/WindowsResources.cmake @@ -10,21 +10,32 @@ if(MINGW) find_template_file("windows.rc" CPP_UTILITIES RC_TEMPLATE_FILE) # create Windows icon from png with ffmpeg if available - set(WINDOWS_ICON_PATH "") - set(WINDOWS_ICON_RC_ENTRY "") + unset(WINDOWS_ICON_PATH) + unset(WINDOWS_ICON_RC_ENTRY) find_program(FFMPEG_BIN ffmpeg avconv) if(FFMPEG_BIN) - if(NOT "${PNG_ICON_PATH}") + if(NOT PNG_ICON_PATH) set(PNG_ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/resources/icons/hicolor/128x128/apps/${META_PROJECT_NAME}.png") + set(USING_DEFAULT_PNG_ICON_PATH true) + endif() + if(PNG_ICON_NO_CROP) + unset(PNG_ICON_CROP) + elseif(NOT PNG_ICON_CROP) + # default cropping + set(PNG_ICON_CROP "iw-20:ih-20:10:10") endif() if(EXISTS "${PNG_ICON_PATH}") - set(WINDOWS_ICON_PATH "${CMAKE_CURRENT_BINARY_DIR}/${META_PROJECT_NAME}.ico") + set(WINDOWS_ICON_PATH "${CMAKE_CURRENT_BINARY_DIR}/resources/${META_PROJECT_NAME}.ico") set(WINDOWS_ICON_RC_ENTRY "IDI_ICON1 ICON DISCARDABLE \"${WINDOWS_ICON_PATH}\"") add_custom_command( OUTPUT "${WINDOWS_ICON_PATH}" - COMMAND ${FFMPEG_BIN} -y -i "${PNG_ICON_PATH}" -vf crop=iw-20:ih-20:10:10,scale=64:64 "${WINDOWS_ICON_PATH}" + COMMAND ${FFMPEG_BIN} -y -i "${PNG_ICON_PATH}" -vf crop=${PNG_ICON_CROP},scale=64:64 "${WINDOWS_ICON_PATH}" ) + message(STATUS "Generating Windows icon from \"${PNG_ICON_PATH}\" via ${FFMPEG_BIN}.") + elseif(NOT USING_DEFAULT_PNG_ICON_PATH) + message(FATAL_ERROR "The specified PNG_ICON_PATH \"${PNG_ICON_PATH}\" is invalid.") endif() + unset(USING_DEFAULT_PNG_ICON_PATH) endif(FFMPEG_BIN) # create Windows rc file from template