# -------------------------------------------------------------------------------------------------- # Deploy Qt for Windows function(x_deploy_qt_for_windows target) get_target_property(QT_TARGET_TYPE Qt${QT_VERSION_MAJOR}::Core TYPE) if(QT_TARGET_TYPE STREQUAL "STATIC_LIBRARY") return() endif() if(NOT DEFINED WINDEPLOYQT_EXECUTABLE) set(WINDEPLOYQT_EXECUTABLE "${QT_DIR}/../../../bin/windeployqt.exe") endif() if(NOT EXISTS ${WINDEPLOYQT_EXECUTABLE}) return() endif() if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/qml) add_custom_command( TARGET ${target} POST_BUILD COMMAND ${WINDEPLOYQT_EXECUTABLE} $ --no-compiler-runtime --qmldir "${CMAKE_CURRENT_LIST_DIR}/qml" COMMENT "Deploy Qt for Windows..." VERBATIM) else() add_custom_command( TARGET ${target} POST_BUILD COMMAND ${WINDEPLOYQT_EXECUTABLE} $ --no-compiler-runtime COMMENT "Deploy Qt for Windows..." VERBATIM) endif() if(MSVC AND NOT ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")) cmake_path(GET CMAKE_CXX_COMPILER PARENT_PATH COMPILER_PATH) # add '-' to ignore error if the file does not exist add_custom_command( TARGET ${target} POST_BUILD VERBATIM COMMAND ${CMAKE_COMMAND} -E copy_if_different "${COMPILER_PATH}/vcruntime140.dll" $ "||" ${CMAKE_COMMAND} -E true COMMAND ${CMAKE_COMMAND} -E copy_if_different "${COMPILER_PATH}/vcruntime140_1.dll" $ "||" ${CMAKE_COMMAND} -E true COMMAND ${CMAKE_COMMAND} -E copy_if_different "${COMPILER_PATH}/msvcp140.dll" $ "||" ${CMAKE_COMMAND} -E true COMMAND ${CMAKE_COMMAND} -E copy_if_different "${COMPILER_PATH}/msvcp140_1.dll" $ "||" ${CMAKE_COMMAND} -E true COMMAND ${CMAKE_COMMAND} -E copy_if_different "${COMPILER_PATH}/msvcp140_2.dll" $ "||" ${CMAKE_COMMAND} -E true) if(EXISTS "${QT_DIR}/../../../bin/libcrypto-3-x64.dll") add_custom_command( TARGET ${target} POST_BUILD VERBATIM COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_DIR}/../../../bin/libcrypto-3-x64.dll" $) endif() if(EXISTS "${QT_DIR}/../../../bin/libssl-3-x64.dll") add_custom_command( TARGET ${target} POST_BUILD VERBATIM COMMAND ${CMAKE_COMMAND} -E copy_if_different "${QT_DIR}/../../../bin/libssl-3-x64.dll" $) endif() endif() endfunction() # -------------------------------------------------------------------------------------------------- # Deploy Qt for macOS function(x_deploy_qt_for_mac target) if(NOT DEFINED MACDEPLOYQT_EXECUTABLE) return() endif() add_custom_command( TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "Target path of macOS is: $" COMMAND ${MACDEPLOYQT_EXECUTABLE} "$" COMMENT "Deploying...") endfunction() # -------------------------------------------------------------------------------------------------- # Deploy Qt for linux function(x_deploy_qt_for_linux target) # Do nothing... endfunction() # -------------------------------------------------------------------------------------------------- # Deploy Qt for unix function(x_deploy_qt_for_unix target) # Do nothing... endfunction() # -------------------------------------------------------------------------------------------------- # Deploy Qt function(x_deploy_qt target) if(WIN32) x_deploy_qt_for_windows(${target}) elseif(APPLE) x_deploy_qt_for_mac(${target}) elseif(LINUX) x_deploy_qt_for_linux(${target}) elseif(UNIX) x_deploy_qt_for_unix(${target}) endif() endfunction()