From faf815fee0da46e8df09cd81cbfaa7bc30f842aa Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 27 Oct 2021 20:39:39 +0400 Subject: [PATCH] Allow loading Qt resources from a file on macOS. --- target_prepare_qrc.cmake | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 target_prepare_qrc.cmake diff --git a/target_prepare_qrc.cmake b/target_prepare_qrc.cmake new file mode 100644 index 0000000..0e2ec4b --- /dev/null +++ b/target_prepare_qrc.cmake @@ -0,0 +1,49 @@ +# This file is part of Desktop App Toolkit, +# a set of libraries for developing nice desktop applications. +# +# For license and copyright information please follow this link: +# https://github.com/desktop-app/legal/blob/master/LEGAL + +function(target_add_resource target_name) + set(list ${ARGV}) + list(REMOVE_AT list 0) + target_sources(${target_name} PRIVATE ${list}) + get_target_property(existing_resources ${target_name} RESOURCE) + if (NOT "${existing_resources}" STREQUAL "existing_resources-NOTFOUND") + foreach(existing ${existing_resources}) + list(APPEND list ${existing}) + endforeach() + endif() + set_target_properties(${target_name} PROPERTIES RESOURCE "${list}") +endfunction() + +function(target_prepare_qrc target_name) + if (NOT APPLE) + set_target_properties(${target_name} PROPERTIES AUTORCC ON) + else() + set(rcc_flags --binary "$") + + set(qrc_files_all "$,INCLUDE,\\.qrc$>") + if (WIN32) + set(qrc_files "$") + elseif (APPLE) + set(qrc_files "$") + elseif (LINUX) + set(qrc_files "$") + endif() + set(rcc_file ${target_name}.rcc) + set(rcc_path "${CMAKE_BINARY_DIR}/${rcc_file}") + source_group(TREE ${CMAKE_BINARY_DIR} PREFIX Resources FILES ${rcc_path}) + if (DESKTOP_APP_QT6) + set(rcc_binary Qt6::rcc) + else() + set(rcc_binary Qt5::rcc) + endif() + add_custom_command(OUTPUT ${rcc_path} + DEPENDS ${qrc_files} + COMMAND ${rcc_binary} ${rcc_flags} -o ${rcc_path} ${qrc_files} + COMMAND_EXPAND_LISTS VERBATIM + ) + target_add_resource(${target_name} ${rcc_path}) + endif() +endfunction()