xT: improve MSYS2 build

The static Qt 6 package is unusable.
This commit is contained in:
Přemysl Eric Janouch 2024-12-18 15:37:27 +01:00
parent f6483489c2
commit 6ac2ac5511
Signed by: p
GPG Key ID: A0420B94F92B9493
2 changed files with 25 additions and 2 deletions

View File

@ -109,8 +109,10 @@ include (GNUInstallDirs)
if (ANDROID)
install (TARGETS xT DESTINATION .)
elseif (APPLE OR WIN32)
# TODO(p): Consider whether or not to use MSYS2.
install (TARGETS xT DESTINATION .)
install (TARGETS xT
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
# XXX: QTBUG-127075, which can be circumvented by manually running
# macdeployqt on xT.app before the install.
qt_generate_deploy_app_script (TARGET xT OUTPUT_SCRIPT deploy_xT)
@ -127,6 +129,26 @@ else ()
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
endif ()
# Within MSYS2, windeployqt doesn't copy the compiler runtime,
# which is always linked dynamically by the Qt binaries.
# TODO(p): Consider whether or not to use MSYS2 to cross-compile, and how.
if (WIN32)
install (CODE [=[
set (bindir "${CMAKE_INSTALL_PREFIX}/bin")
execute_process (COMMAND cygpath -m /
OUTPUT_VARIABLE cygroot OUTPUT_STRIP_TRAILING_WHITESPACE)
if (cygroot)
execute_process (COMMAND ldd "${bindir}/xT.exe"
OUTPUT_VARIABLE ldd_output OUTPUT_STRIP_TRAILING_WHITESPACE)
string (REGEX MATCHALL " /mingw64/bin/[^ ]+ " libs "${ldd_output}")
foreach (lib ${libs})
string (STRIP "${lib}" lib)
file (COPY "${cygroot}${lib}" DESTINATION "${bindir}")
endforeach()
endif ()
]=])
endif ()
# CPack
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")

View File

@ -1421,6 +1421,7 @@ static void
build_main_window()
{
g.wMain = new QMainWindow;
refresh_icon();
auto central = new QWidget(g.wMain);
auto vbox = new QVBoxLayout(central);