diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2019-06-12 13:09:13 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2019-06-12 14:22:30 +0000 |
commit | 319fd4ea9ae89874671296c33880805c401844c9 (patch) | |
tree | 35926f0a5c407ab9f02ce048ced19d5f24907a63 /src/corelib/CMakeLists.txt | |
parent | efa9998521cb061051fe8b75d0df3206d0b32ec5 (diff) |
Make WinMain linkage compatible with Qt 5
In Qt 5, the Qt5Core target was extended by Qt5CoreConfigExtras.cmake to
have a generator expression as interface linkage that would
conditionally link WinMain.
This patch implements the same through regular interface linkage right
in corelib. Since the linkage happens through a generator expression,
our dependency generator does not see this as a dependency. Therefore we
add this as an unconditional package dependency for corelib, on Windows.
In theory this could be done also in winmain's CMakeLists.txt, as
targets can be extended outside of their directory. However this adds a
directory id (WinMain:@<023423>) to the linkage, which mysteriously is
not removed on the exported core target.
Change-Id: If2abb9ba790f51274f582c9ec28c13d968b84302
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
Diffstat (limited to 'src/corelib/CMakeLists.txt')
-rw-r--r-- | src/corelib/CMakeLists.txt | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 1932af8b6d..f6571df7c6 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -1080,6 +1080,17 @@ if(WIN32) endif() qt_internal_add_link_flags_gc_sections(Core PRIVATE) + +if(WIN32) + set(isExe $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>) + set(isWin32 $<BOOL:$<TARGET_PROPERTY:WIN32_EXECUTABLE>>) + set(isNotExcluded $<NOT:$<BOOL:$<TARGET_PROPERTY:Qt5_NO_LINK_QTMAIN>>>) + set(isPolicyNEW $<TARGET_POLICY:CMP0020>) + + target_link_libraries(Core INTERFACE $<$<AND:${isExe},${isWin32},${isNotExcluded},${isPolicyNEW}>:Qt::WinMain>) + qt_internal_module_info(win_main_module WinMain) + set_property(TARGET Core APPEND PROPERTY QT_EXTRA_PACKAGE_DEPENDENCIES "${win_main_module_versioned}\\\;${PROJECT_VERSION}") +endif() # special case end qt_create_tracepoints(Core qtcore.tracepoints) |