diff --git a/contrib/qt/convert-prl-libs-to-cmake.pl b/contrib/qt/convert-prl-libs-to-cmake.pl --- a/contrib/qt/convert-prl-libs-to-cmake.pl +++ b/contrib/qt/convert-prl-libs-to-cmake.pl @@ -33,6 +33,7 @@ use warnings; my $qt_lib; +my $qt_install_dir; my $component_name; my $out_name; my $compiler; @@ -42,6 +43,7 @@ sub processArgs { GetOptions ( "lib=s" => \$qt_lib, + "qt_install_dir=s" => \$qt_install_dir, "component=s" => \$component_name, "out=s" => \$out_name, "compiler=s" => \$compiler @@ -83,6 +85,7 @@ if (_link_libs) set(_list_sep ";") else () + set(_link_libs "") set(_list_sep "") endif () set_target_properties(Qt5::${_component} PROPERTIES @@ -113,7 +116,7 @@ $lib = "$libs[$i] $libs[$i + 1]"; ++$i; } - $lib =~ s"\$\$\[QT_INSTALL_LIBS\]"$qt_lib_dir"g; + $lib =~ s"\$\$\[QT_INSTALL_LIBS\]"$qt_install_dir"g; if (lc($compiler) eq 'msvc') { # convert backslashes diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -29,6 +29,7 @@ get_target_property(_lib_location Qt5::${_qt_component} LOCATION) execute_process(COMMAND ${PERL_EXECUTABLE} "${CONVERT_PRL_PATH}" --lib ${_lib_location} + --qt_install_dir ${_qt5_install_prefix}/.. --out ${STATIC_DEPENDENCIES_CMAKE_FILE} --component ${_qt_component} --compiler ${CMAKE_CXX_COMPILER_ID} @@ -40,6 +41,11 @@ foreach(qt_module ${QT_REQUIRED_COMPONENTS}) CONVERT_PRL_LIBS_TO_CMAKE(${qt_module}) endforeach() + + if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + CONVERT_PRL_LIBS_TO_CMAKE(QWindowsIntegrationPlugin) + endif() + # HACK: We must explicitly add LIB path of the Qt installation # to correctly find qtpcre link_directories(${_qt5_install_prefix}/../) @@ -155,9 +161,22 @@ qrc_bitcoin_locale.cpp ) +if(QT_STATIC_BUILD) + target_compile_definitions(bitcoin-qt-base INTERFACE -DQT_STATICPLUGIN=1) +endif() + # Windows support if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") target_sources(bitcoin-qt-base PRIVATE winshutdownmonitor.cpp) + + # Use windows platform plugin + target_compile_definitions(bitcoin-qt-base INTERFACE + -DQT_QPA_PLATFORM_WINDOWS=1 + ) + + target_link_libraries(bitcoin-qt-base + Qt5::QWindowsIntegrationPlugin + ) endif() target_include_directories(bitcoin-qt-base