From d34e70d73cb16a60c0bc359e88ab69884dae327d Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 3 Apr 2019 13:15:03 +0200 Subject: Fix CMakeLists.txt for linking against a static Qt Change-Id: Ibc906e993046f57447caab8f006f8eb7e669a25d Reviewed-by: Joerg Bornemann --- src/jomlib/CMakeLists.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/jomlib/CMakeLists.txt b/src/jomlib/CMakeLists.txt index e1adcd4..6ca1fab 100644 --- a/src/jomlib/CMakeLists.txt +++ b/src/jomlib/CMakeLists.txt @@ -45,6 +45,27 @@ add_library(jomlib STATIC target_include_directories(jomlib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(jomlib PUBLIC Qt5::Core) + +# If we're building against a static Qt on Windows, +# we must link manually against all private libraries. +# This should not be necessary. See QTBUG-38913. +get_target_property(qt_core_type Qt5::Core TYPE) +if(qt_core_type MATCHES STATIC_LIBRARY) + target_link_libraries(jomlib PRIVATE mincore userenv winmm ws2_32) + + if(CMAKE_BUILD_TYPE MATCHES Debug) + set(debug_suffix d) + set(qt_build_config DEBUG) + else() + set(debug_suffix "") + set(qt_build_config RELEASE) + endif() + + get_target_property(qt_core_lib_location Qt5::Core IMPORTED_LOCATION_${qt_build_config}) + get_filename_component(qt_core_lib_dir ${qt_core_lib_location} DIRECTORY) + target_link_libraries(jomlib PRIVATE "${qt_core_lib_dir}/qtpcre2${debug_suffix}.lib") +endif() + target_compile_definitions(jomlib PRIVATE QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII -- cgit v1.2.3