Skip to content

Commit addc0f9

Browse files
committed
v4 update
1 parent df0a2b7 commit addc0f9

1 file changed

Lines changed: 73 additions & 4 deletions

File tree

.github/workflows/build-cpp.yml

Lines changed: 73 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ jobs:
226226
--release \
227227
--no-translations \
228228
--compiler-runtime \
229+
--include-soft-plugins \
229230
--force \
230231
dist/${{ matrix.exe }}
231232
else
@@ -243,7 +244,7 @@ jobs:
243244
Qt6Charts.dll Qt6PrintSupport.dll \
244245
Qt6Network.dll Qt6Sql.dll Qt6Concurrent.dll \
245246
Qt6WebSockets.dll \
246-
Qt6Multimedia.dll Qt6MultimediaWidgets.dll \
247+
Qt6Multimedia.dll \
247248
Qt6OpenGL.dll Qt6OpenGLWidgets.dll \
248249
Qt6Svg.dll Qt6Xml.dll; do
249250
if [ -f "${QT_BIN}/${qt_dll}" ] && [ ! -f "dist/${qt_dll}" ]; then
@@ -269,10 +270,12 @@ jobs:
269270
# ----------------------------------------------------------------
270271
# MSVC Runtime DLLs — --compiler-runtime covers most, but copy
271272
# from System32 as a fallback for anything missed.
273+
# msvcp170 / vcruntime140_2 are the VS2022 v17.x toolset DLLs.
272274
# ----------------------------------------------------------------
273275
for vcrt_dll in \
274-
vcruntime140.dll vcruntime140_1.dll \
276+
vcruntime140.dll vcruntime140_1.dll vcruntime140_2.dll \
275277
msvcp140.dll msvcp140_1.dll msvcp140_2.dll \
278+
msvcp170.dll \
276279
concrt140.dll vccorlib140.dll; do
277280
SYS32="/c/Windows/System32/${vcrt_dll}"
278281
if [ -f "$SYS32" ] && [ ! -f "dist/${vcrt_dll}" ]; then
@@ -362,6 +365,57 @@ jobs:
362365
done
363366
fi
364367
368+
# ----------------------------------------------------------------
369+
# Qt MultimediaWidgets DLL — required when HAS_QT_MULTIMEDIA is set
370+
# (Qt6Multimedia.dll is in the core list above; this is the separate
371+
# widgets integration DLL that windeployqt may miss)
372+
# ----------------------------------------------------------------
373+
if [ -f "${QT_BIN}/Qt6MultimediaWidgets.dll" ] && [ ! -f "dist/Qt6MultimediaWidgets.dll" ]; then
374+
cp "${QT_BIN}/Qt6MultimediaWidgets.dll" dist/
375+
echo "Copied Qt6MultimediaWidgets.dll"
376+
fi
377+
378+
# ----------------------------------------------------------------
379+
# Qt TextToSpeech DLL + SAPI plugin (Windows TTS backend)
380+
# ----------------------------------------------------------------
381+
if [ -f "${QT_BIN}/Qt6TextToSpeech.dll" ] && [ ! -f "dist/Qt6TextToSpeech.dll" ]; then
382+
cp "${QT_BIN}/Qt6TextToSpeech.dll" dist/
383+
echo "Copied Qt6TextToSpeech.dll"
384+
fi
385+
if [ -d "${QT_PLUGINS}/texttospeech" ]; then
386+
mkdir -p dist/texttospeech
387+
cp -n "${QT_PLUGINS}/texttospeech/"*.dll dist/texttospeech/ 2>/dev/null || true
388+
echo "Copied texttospeech plugins"
389+
fi
390+
391+
# ----------------------------------------------------------------
392+
# Qt Network Information plugins (Qt 6.2+ — used by QNetworkInformation)
393+
# ----------------------------------------------------------------
394+
if [ -d "${QT_PLUGINS}/networkinformation" ]; then
395+
mkdir -p dist/networkinformation
396+
cp -n "${QT_PLUGINS}/networkinformation/"*.dll dist/networkinformation/ 2>/dev/null || true
397+
echo "Copied networkinformation plugins"
398+
fi
399+
400+
# ----------------------------------------------------------------
401+
# Qt Platform Input Contexts — IME support (CJK, on-screen keyboard)
402+
# ----------------------------------------------------------------
403+
if [ -d "${QT_PLUGINS}/platforminputcontexts" ]; then
404+
mkdir -p dist/platforminputcontexts
405+
cp -n "${QT_PLUGINS}/platforminputcontexts/"*.dll dist/platforminputcontexts/ 2>/dev/null || true
406+
echo "Copied platforminputcontexts plugins"
407+
fi
408+
409+
# ----------------------------------------------------------------
410+
# Qt Print Support Plugin — required by Qt6::PrintSupport
411+
# (the DLL is in the core list; this is the Windows printer backend plugin)
412+
# ----------------------------------------------------------------
413+
if [ -d "${QT_PLUGINS}/printsupport" ]; then
414+
mkdir -p dist/printsupport
415+
cp -n "${QT_PLUGINS}/printsupport/"*.dll dist/printsupport/ 2>/dev/null || true
416+
echo "Copied printsupport plugins"
417+
fi
418+
365419
# ----------------------------------------------------------------
366420
# Qt Generic Plugins (touch/tablet input)
367421
# ----------------------------------------------------------------
@@ -372,9 +426,12 @@ jobs:
372426
373427
# ----------------------------------------------------------------
374428
# Direct3D compiler + OpenGL SW fallback
375-
# Needed on machines without a proper GPU driver (VMs, headless CI)
429+
# Needed on machines without a proper GPU driver (VMs, headless CI).
430+
# dxcompiler.dll + dxil.dll: Qt 6.6+ D3D12 backend (DXC shader compiler).
376431
# ----------------------------------------------------------------
377-
for d3d_dll in d3dcompiler_47.dll opengl32sw.dll libEGL.dll libGLESv2.dll; do
432+
for d3d_dll in \
433+
d3dcompiler_47.dll opengl32sw.dll libEGL.dll libGLESv2.dll \
434+
dxcompiler.dll dxil.dll; do
378435
if [ -f "${QT_BIN}/${d3d_dll}" ] && [ ! -f "dist/${d3d_dll}" ]; then
379436
cp "${QT_BIN}/${d3d_dll}" dist/
380437
echo "Copied ${d3d_dll}"
@@ -392,6 +449,18 @@ jobs:
392449
fi
393450
done
394451
452+
# ----------------------------------------------------------------
453+
# qt.conf — pins plugin and data paths relative to the executable.
454+
# Without this, Qt falls back to hardcoded build-time paths which
455+
# don't exist on a clean machine and can cause plugin load failures.
456+
# ----------------------------------------------------------------
457+
cat > dist/qt.conf <<'QTCONF'
458+
[Paths]
459+
Prefix = .
460+
Plugins = .
461+
Libraries = .
462+
QTCONF
463+
395464
# ----------------------------------------------------------------
396465
# Copy app resources and Python analytics scripts
397466
# ----------------------------------------------------------------

0 commit comments

Comments
 (0)