Fix linking of non-console application on mingw

As a result of b5af1408099d the link dependency to the
mingw32 static library was ordered after the entrypoint
library, which resulted in the WinMain symbol not being
found during linking due to how the static linker processes
archives.

Fixes: QTBUG-87725
Change-Id: I8e075f91f7f06dcdc618a4e0ae6d9c1d832888c0
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Tor Arne Vestbø 2020-10-20 16:42:10 +02:00
parent 0948846b42
commit 4ad464461f
2 changed files with 10 additions and 2 deletions

View File

@ -1,2 +1,11 @@
qt:!console:contains(TEMPLATE, ".*app"): \
qt:!console:contains(TEMPLATE, ".*app") {
# This library needs to come before the entry-point library in the
# linker line, so that the static linker will pick up the WinMain
# symbol from the entry-point library. Unfortunately qmake and the
# module system doesn't allow specifying linker flags or dependencies
# as part of the module that end up _before_ the library itself, so
# we have to work around it by declaring the dependency here.
mingw: LIBS += -lmingw32
QT_PRIVATE += entrypoint
}

View File

@ -23,7 +23,6 @@ win32 {
mingw {
DEFINES += QT_NEEDS_QMAIN
MODULE_DEFINES += QT_NEEDS_QMAIN
LIBS += -lmingw32
}
}