Deploy QT DLLs using windeployqt tool (#3432)

* Deploy QT DLLs using windeployqt tool

Replace the old mechanism that manually copy the DLLs using either CMake
or VS built-in functions. The new approach uses the windeployqt tool
provided by the QT project that automatically detect the needed DLLs and
perform the necessary copying.

This approach should be more robust if there's an upstream change on QT
project regarding DLLs usage.

* QT DLLs: do not ship RPCS3 with ANGLE and software-OpenGL

According to https://doc.qt.io/qt-5/windows-requirements.html ANGLE is
useful for applications that use OpenGL ES by removing the need to
install OpenGL drivers, redirecting OpenGL calls to DirectX instead.
RPCS does not uses OpenGL ES so it's better to just remove it from the
binary distribution.

opengl32sw.dll is a fallback mechanism when ANGLE libraries are not
available that uses a software backend for OpenGL. It's unlikely that
RPCS3 will work using software-OpenGL, so there's little point into
shipping them.

* QT DLLs: do not ship with SVG and translation files

Like the other removed QT libraries: they are not needed right now. We
can deploy them if they become useful someday.
This commit is contained in:
Henrique Jung 2017-09-21 10:53:20 -03:00 committed by kd-11
parent 3499d089e7
commit daa7520d1d
5 changed files with 10 additions and 32 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -413,27 +413,17 @@ set_target_properties(rpcs3 PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${RPCS3_SR
if (MSVC)
# Under Windows, some QT DLLs need to be in the same directory of the compiled
# RPCS3 binary, so copy them from the local QT installation at the end of the
# build
# RPCS3 binary, so call the windeployqt tool that will take care of copying
# them from the local QT installation at the end of the build.
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
# debug build uses different DDLs files
set (RUNTIME_DLLS
$ENV{QTDIR}/bin/Qt5Cored.dll
$ENV{QTDIR}/bin/Qt5Guid.dll
$ENV{QTDIR}/bin/Qt5Widgetsd.dll
$ENV{QTDIR}/bin/Qt5WinExtrasd.dll
add_custom_command(TARGET rpcs3 POST_BUILD
COMMAND $ENV{QTDIR}/bin/windeployqt --no-angle --no-opengl-sw --no-svg --no-translations --debug ${CMAKE_BINARY_DIR}/bin
)
else()
set (RUNTIME_DLLS
$ENV{QTDIR}/bin/Qt5Core.dll
$ENV{QTDIR}/bin/Qt5Gui.dll
$ENV{QTDIR}/bin/Qt5Widgets.dll
$ENV{QTDIR}/bin/Qt5WinExtras.dll
add_custom_command(TARGET rpcs3 POST_BUILD
COMMAND $ENV{QTDIR}/bin/windeployqt --no-angle --no-opengl-sw --no-svg --no-translations ${CMAKE_BINARY_DIR}/bin
)
endif()
add_custom_command(TARGET rpcs3 POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${RUNTIME_DLLS} ${CMAKE_BINARY_DIR}/bin
)
endif()
cotire(rpcs3)

View File

@ -166,10 +166,7 @@
</ResourceCompile>
<PostBuildEvent>
<Command>
xcopy "$(QTDIR)\bin\Qt5Core.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Gui.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Widgets.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5WinExtras.dll" "$(OutDir)" /d
$(QTDIR)\bin\windeployqt --no-angle --no-opengl-sw --no-svg --no-translations $(OutDir)
</Command>
</PostBuildEvent>
<PostBuildEvent>
@ -221,10 +218,7 @@
</ResourceCompile>
<PostBuildEvent>
<Command>
xcopy "$(QTDIR)\bin\Qt5Core.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Gui.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Widgets.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5WinExtras.dll" "$(OutDir)" /d
$(QTDIR)\bin\windeployqt --no-angle --no-opengl-sw --no-svg --no-translations $(OutDir)
</Command>
</PostBuildEvent>
<PostBuildEvent>
@ -277,10 +271,7 @@
</ResourceCompile>
<PostBuildEvent>
<Command>
xcopy "$(QTDIR)\bin\Qt5Cored.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Guid.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Widgetsd.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5WinExtrasd.dll" "$(OutDir)" /d
$(QTDIR)\bin\windeployqt --no-angle --no-opengl-sw --no-svg --no-translations --debug $(OutDir)
</Command>
</PostBuildEvent>
<PostBuildEvent>
@ -333,10 +324,7 @@
</ResourceCompile>
<PostBuildEvent>
<Command>
xcopy "$(QTDIR)\bin\Qt5Cored.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Guid.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5Widgetsd.dll" "$(OutDir)" /d
xcopy "$(QTDIR)\bin\Qt5WinExtrasd.dll" "$(OutDir)" /d
$(QTDIR)\bin\windeployqt --no-angle --no-opengl-sw --no-svg --no-translations --debug $(OutDir)
</Command>
</PostBuildEvent>
<PostBuildEvent>