mpyne added a comment.
What about this? I can't change the diff since I didn't create the RR, but this seems to cause the required dependency rules to be added and works for me to build plasma-desktop. The only real addition is the `add_dependencies` call. I tried this without the `add_custom_target` dance but CMake complained about the JSON file not being present so it looks like it needs to be a real CMake target to work. diff --git a/KF5CoreAddonsMacros.cmake b/KF5CoreAddonsMacros.cmake index f22817d..c15ab98 100644 --- a/KF5CoreAddonsMacros.cmake +++ b/KF5CoreAddonsMacros.cmake @@ -58,13 +58,19 @@ function(kcoreaddons_desktop_to_json target desktop) endforeach() endif() + # Create a virtual target for the generated JSON file and force + # the passed in target and its auto-generated sources to depend upon it + string(RANDOM _target_name_suffix) + set(_json_target "desktop_to_json_${_target_name_suffix}") + add_custom_target(${_json_target}) add_custom_command( - OUTPUT ${json} + TARGET ${_json_target} COMMAND ${command} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${desktop} ) - set_property(TARGET ${target} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${json}) + add_dependencies(${target} ${_json_target}) + set_property(TARGET ${target} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${_json_target}) endfunction() function(_desktop_to_json_cmake28 desktop json compat) A resulting Make-based build directory seems to contain the right rules: CMakeFiles/Makefile2 6522:kcms/lookandfeel/CMakeFiles/kcm_lookandfeel.dir/all: kcms/lookandfeel/CMakeFiles/desktop_to_json_ChFVC.dir/all 6597:kcms/lookandfeel/CMakeFiles/kcm_lookandfeel_autogen.dir/all: kcms/lookandfeel/CMakeFiles/desktop_to_json_ChFVC.dir/all REPOSITORY R244 KCoreAddons REVISION DETAIL https://phabricator.kde.org/D10450 To: tcberner, #freebsd, mpyne, bshah, dfaure, rakuco Cc: rikmills, rakuco, kfunk, adridg, kossebau, #frameworks, michaelh