Warning, /libraries/kproperty/cmake/modules/KPropertyAddIconsRccFile.cmake is written in an unsupported language. File is not indexed.
0001 # Copyright (C) 2016 Jarosław Staniek <staniek@kde.org> 0002 # 0003 # Redistribution and use is allowed according to the terms of the BSD license. 0004 # For details see the accompanying COPYING-CMAKE-SCRIPTS file. 0005 0006 add_custom_target(update_all_rcc 0007 COMMENT "Updating all file lists for rcc icons files" 0008 ) 0009 0010 # Builds and install an rcc file with icons. 0011 # - resource subdirectory in the current build subdir is created 0012 # - ${_target}.qrc is created based on icons/${_theme}/files.cmake 0013 # - ${_target}.rcc is generated using rcc-qt5 0014 # - if _prefix is not empty, icons are placed in icons/${_prefix}/${_theme} path (useful for plugins) 0015 # - dependency for the parent target ${_parent_target} is added 0016 # - the .rcc file is installed to ${ICONS_INSTALL_DIR} 0017 # - update_${_target} target is added for requesting update of icons/${_theme}/files.cmake 0018 # - adds a update_all_rcc target that executes commands for all targets created with kproperty_add_icons_rcc_file() 0019 macro(kproperty_add_icons_rcc_file _target _parent_target _theme _prefix) 0020 set(_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/resource) 0021 set(_QRC_FILE "${_BASE_DIR}/${_target}.qrc") 0022 set(_RCC_DIR "${CMAKE_BINARY_DIR}/bin/data/icons") 0023 set(_RCC_FILE "${_RCC_DIR}/${_target}.rcc") 0024 include(icons/${_theme}/files.cmake) 0025 0026 add_custom_target(${_target}_copy_icons 0027 COMMAND ${CMAKE_COMMAND} -E remove_directory ${_BASE_DIR} 0028 COMMAND ${CMAKE_COMMAND} -E make_directory ${_BASE_DIR} 0029 COMMAND ${CMAKE_COMMAND} -E make_directory ${_RCC_DIR} 0030 COMMAND ${CMAKE_COMMAND} -E copy_directory icons/${_theme} ${_BASE_DIR}/icons/${_prefix}/${_theme} 0031 COMMAND ${CMAKE_COMMAND} -E remove -f ${_BASE_DIR}/CMakeLists.txt 0032 COMMAND ${CMAKE_COMMAND} -E remove -f ${_BASE_DIR}/icons/${_prefix}/${_theme}/files.cmake 0033 DEPENDS "${_FILES}" 0034 SOURCES "${_FILES}" 0035 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 0036 COMMENT "Copying icon files to ${_BASE_DIR}" 0037 VERBATIM 0038 ) 0039 0040 add_custom_target(${_target}_build_qrc 0041 COMMAND ${Qt5Core_RCC_EXECUTABLE} --project -o "${CMAKE_CURRENT_BINARY_DIR}/${_target}.qrc" 0042 # avoid adding the .qrc file to rcc due to rcc misfeature 0043 COMMAND ${CMAKE_COMMAND} -E rename "${CMAKE_CURRENT_BINARY_DIR}/${_target}.qrc" "${_QRC_FILE}" 0044 DEPENDS "${_FILES}" 0045 SOURCES "${_FILES}" 0046 WORKING_DIRECTORY "${_BASE_DIR}" 0047 COMMENT "Building Qt resource file ${_QRC_FILE}" 0048 VERBATIM 0049 ) 0050 add_dependencies(${_target}_build_qrc ${_target}_copy_icons) 0051 0052 add_custom_target(${_target}_build_rcc 0053 COMMAND ${Qt5Core_RCC_EXECUTABLE} --compress 9 --threshold 0 --binary 0054 --output "${_RCC_FILE}" "${_QRC_FILE}" 0055 #COMMAND ${CMAKE_COMMAND} -E remove -f ${_QRC_FILE} 0056 DEPENDS "${_QRC_FILE}" "${_FILES}" 0057 WORKING_DIRECTORY "${_BASE_DIR}" 0058 COMMENT "Building external Qt resource ${_RCC_FILE}" 0059 VERBATIM 0060 ) 0061 add_dependencies(${_target}_build_rcc ${_target}_build_qrc) 0062 0063 add_dependencies(${_parent_target} ${_target}_build_rcc) 0064 0065 install(FILES 0066 ${_RCC_FILE} 0067 DESTINATION "${ICONS_INSTALL_DIR}" 0068 ) 0069 0070 add_update_file_target( 0071 TARGET update_${_target} 0072 COMMAND "${PROJECT_SOURCE_DIR}/cmake/modules/update_icon_list.sh" 0073 ${_theme} icons/${_theme}/files.cmake 0074 FILE ${_target}_files.cmake 0075 SOURCES "${PROJECT_SOURCE_DIR}/cmake/modules/update_icon_list.sh" 0076 ) 0077 add_dependencies(update_all_rcc update_${_target}) 0078 0079 unset(_BASE_DIR) 0080 unset(_QRC_FILE) 0081 unset(_RCC_FILE) 0082 endmacro()