diff --git a/KF5PackageMacros.cmake b/KF5PackageMacros.cmake --- a/KF5PackageMacros.cmake +++ b/KF5PackageMacros.cmake @@ -146,20 +146,19 @@ set(kpkgqrc "${CMAKE_CURRENT_BINARY_DIR}/${component}.qrc") find_program(KPACKAGE_RCC rcc DOC "rcc binary for generating kpackage contents.rcc files") - install(CODE " - set(metadatajson ${metadatajson}) - set(root ${root}) - set(install_dir ${install_dir}) - set(BINARYDIR ${CMAKE_CURRENT_BINARY_DIR}) - set(DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}/${dir}\") - set(OUTPUTFILE \"${kpkgqrc}\") - set(component ${component}) - include(${kpackagedir}/qrc.cmake) - message(STATUS \"Generating: ${KDE_INSTALL_FULL_DATADIR}/${install_dir}/${root}/${component}/contents.rcc\") - execute_process(COMMAND ${KPACKAGE_RCC} ${kpkgqrc} --binary -o ${KDE_INSTALL_FULL_DATADIR}/${install_dir}/${root}/${component}/contents.rcc ERROR_VARIABLE errors RESULT_VARIABLE code) - if (code) - message(FATAL_ERROR \"failed to generating rcc \${code}: \${errors}\") - endif() - ") + set(metadatajson ${metadatajson}) + set(root ${root}) + set(install_dir ${install_dir}) + set(BINARYDIR ${CMAKE_CURRENT_BINARY_DIR}) + set(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${dir}") + set(OUTPUTFILE "${kpkgqrc}") + set(component ${component}) + include(${kpackagedir}/qrc.cmake) + set(GENERATED_RRC_CONTENTS "${CMAKE_CURRENT_BINARY_DIR}/${component}-contents.rcc") + add_custom_command( + OUTPUT ${GENERATED_RRC_CONTENTS} + COMMAND ${KPACKAGE_RCC} ${kpkgqrc} --binary -o ${GENERATED_RRC_CONTENTS}) + add_custom_target(${component}-${root}-contents-rcc ALL DEPENDS ${GENERATED_RRC_CONTENTS} ${component}-${root}-metadata-json) + install(FILES ${GENERATED_RRC_CONTENTS} DESTINATION ${KDE_INSTALL_FULL_DATADIR}/${install_dir}/${root}/${component}/ RENAME contents.rcc) endfunction()