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.
This commit is contained in:
Uwe Hermann 2014-01-09 00:49:47 +01:00
parent 4889835331
commit 11a04e2a8e
2 changed files with 15 additions and 0 deletions

View File

@ -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}

View File

@ -39,6 +39,12 @@
#include "config.h"
#ifdef _WIN32
// The static qsvg lib is required for SVG graphics/icons (on Windows).
#include <QtPlugin>
Q_IMPORT_PLUGIN(qsvg)
#endif
void usage()
{
fprintf(stdout,