diff options
-rw-r--r-- | src/activeqt/control/Qt6AxServerMacros.cmake | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/src/activeqt/control/Qt6AxServerMacros.cmake b/src/activeqt/control/Qt6AxServerMacros.cmake index 7e67eda..df7a643 100644 --- a/src/activeqt/control/Qt6AxServerMacros.cmake +++ b/src/activeqt/control/Qt6AxServerMacros.cmake @@ -55,10 +55,25 @@ function(qt6_target_idl target) _qt_internal_get_tool_wrapper_script_path(tool_wrapper) set(tlb_command_list "") + # Wrap tool paths in $<COMMAND_CONFIG> to ensure we use the release tool when building debug + # targets in a multi-config build, because the debug tool is usually not built by default. + if(CMAKE_GENERATOR STREQUAL "Ninja Multi-Config" AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.20") + set(cmb "$<COMMAND_CONFIG:") + set(cme ">") + else() + set(cmb "") + set(cme "") + endif() + + set(idc_target "${QT_CMAKE_EXPORT_NAMESPACE}::idc") + set(idc_target_file "$<TARGET_FILE:${idc_target}>") + set(idc_target_file_command_config_wrapped "${cmb}${idc_target_file}${cme}") + list(APPEND tlb_command_list COMMAND "${tool_wrapper}" - "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>" "$<TARGET_FILE:${target}>" + "${idc_target_file_command_config_wrapped}" + "$<TARGET_FILE:${target}>" /idl "${output_idl}" -version 1.0 ) @@ -69,27 +84,35 @@ function(qt6_target_idl target) set(rc_files "$<FILTER:$<TARGET_PROPERTY:${target},SOURCES>,INCLUDE,\\.rc$>") set(have_rc_files "$<NOT:$<BOOL:$<STREQUAL:${rc_files},>>>") - set(rc_cmd "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>$<SEMICOLON>\ -$<TARGET_FILE:${target}>$<SEMICOLON>/tlb$<SEMICOLON>${output_tlb}") + set(no_rc_cmd "echo \"No rc-file linked into project. The type library of the ${target} \ target will be a separate file.\"") + + set(idc_args + "$<SEMICOLON>$<TARGET_FILE:${target}>$<SEMICOLON>/tlb$<SEMICOLON>${output_tlb}") + + # Split command into two parts, so that COMMAND_CONFIG can be applied only to the idc tool path, + # but not the target and tlb files. + set(cmd_part1 "${cmb}$<IF:${have_rc_files},${idc_target_file},${no_rc_cmd}>${cme}") + set(cmd_part2 "$<${have_rc_files}:${idc_args}>") + list(APPEND tlb_command_list COMMAND - "${tool_wrapper}" "$<IF:${have_rc_files},${rc_cmd},${no_rc_cmd}>" + "${tool_wrapper}" "${cmd_part1}" "${cmd_part2}" ) if(NOT arg_NO_AX_SERVER_REGISTRATION AND NOT QT_NO_AX_SERVER_REGISTRATION) list(APPEND tlb_command_list COMMAND "${tool_wrapper}" - "$<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::idc>" + "${idc_target_file_command_config_wrapped}" "$<TARGET_FILE:${target}>" /regserver ) endif() add_custom_command(TARGET ${target} POST_BUILD ${tlb_command_list} DEPENDS - ${QT_CMAKE_EXPORT_NAMESPACE}::idc + "${idc_target}" VERBATIM COMMAND_EXPAND_LISTS ) |