From 11a04e2a8ed47ed159b68cbe6f56aedd388e445f Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Thu, 9 Jan 2014 00:49:47 +0100 Subject: [PATCH] Fix SVG icons not being displayed on Windows. On Windows (where we use a static Qt) we need to include plugins (in this case "qsvg" a.k.a. libqsvg.a from plugins/imageformats/), otherwise SVGs (such as various icons in PulseView) cannot be displayed. For this we need to use Q_IMPORT_PLUGIN(qsvg) in the code, pass the QT_STATICPLUGIN flag to the compiler, and link against "-lqsvg". This, in turn, requires that we also link against the similarly named QtSvg component/lib (${QT_QTSVG_LIBRARY} a.k.a libQtSvg.a). See also: https://qt-project.org/doc/qt-4.8/plugins-howto.html#static-plugins This fixes bug #239. --- CMakeLists.txt | 9 +++++++++ main.cpp | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8302b482..3859c913 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -278,6 +278,15 @@ else() list(APPEND PULSEVIEW_LINK_LIBS ${PKGDEPS_LIBRARIES}) endif() +if(WIN32) + # On Windows we need to statically link the libqsvg imageformat + # plugin (and the QtSvg component) for SVG graphics/icons to work. + add_definitions(-DQT_STATICPLUGIN) + link_directories("${QT_PLUGINS_DIR}/imageformats") + list(APPEND PULSEVIEW_LINK_LIBS ${QT_QTSVG_LIBRARY}) + list(APPEND PULSEVIEW_LINK_LIBS "-lqsvg") +endif() + add_executable(${PROJECT_NAME} ${pulseview_SOURCES} ${pulseview_HEADERS_MOC} diff --git a/main.cpp b/main.cpp index 3fa93c45..2c6a59ef 100644 --- a/main.cpp +++ b/main.cpp @@ -39,6 +39,12 @@ #include "config.h" +#ifdef _WIN32 +// The static qsvg lib is required for SVG graphics/icons (on Windows). +#include +Q_IMPORT_PLUGIN(qsvg) +#endif + void usage() { fprintf(stdout, -- 2.30.2