target_prepare_qrc.cmake 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # This file is part of Desktop App Toolkit,
  2. # a set of libraries for developing nice desktop applications.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/desktop-app/legal/blob/master/LEGAL
  6. function(target_add_resource target_name)
  7. set(list ${ARGN})
  8. target_sources(${target_name} PRIVATE ${list})
  9. get_target_property(existing_resources ${target_name} RESOURCE)
  10. if (NOT "${existing_resources}" STREQUAL "existing_resources-NOTFOUND")
  11. foreach(existing ${existing_resources})
  12. list(APPEND list ${existing})
  13. endforeach()
  14. endif()
  15. set_target_properties(${target_name} PROPERTIES RESOURCE "${list}")
  16. endfunction()
  17. function(target_prepare_qrc target_name)
  18. if (NOT APPLE)
  19. set_target_properties(${target_name} PROPERTIES AUTORCC ON)
  20. else()
  21. set(rcc_flags --binary "$<TARGET_PROPERTY:${target_name},AUTORCC_OPTIONS>")
  22. set(qrc_files)
  23. get_target_property(list ${target_name} SOURCES)
  24. foreach (entry ${list})
  25. get_source_file_property(skip_autogen ${entry} SKIP_AUTOGEN)
  26. if (NOT ${entry} MATCHES "\\.qrc$" OR skip_autogen)
  27. continue()
  28. endif()
  29. list(APPEND qrc_files ${entry})
  30. endforeach()
  31. if (NOT qrc_files)
  32. return()
  33. endif()
  34. set(rcc_file ${target_name}.rcc)
  35. set(rcc_path "${CMAKE_BINARY_DIR}/${rcc_file}")
  36. source_group(TREE ${CMAKE_BINARY_DIR} PREFIX Resources FILES ${rcc_path})
  37. add_custom_command(OUTPUT ${rcc_path}
  38. DEPENDS ${qrc_files}
  39. COMMAND Qt::rcc ${rcc_flags} -o ${rcc_path} ${qrc_files}
  40. COMMAND_EXPAND_LISTS VERBATIM
  41. )
  42. target_add_resource(${target_name} ${rcc_path})
  43. endif()
  44. endfunction()