zoukankan      html  css  js  c++  java
  • qwt的安装和移植-

    目须要依据实时数据绘制出图表,因此我们找到了qwt库。这个库是一个绘制图表,曲线图,柱状图的统计图标。

    。。

    以下我们就具体解说一下这个库在Larm上的编译和移植

    qwt介绍

    QWT,全称是Qt Widgets for Technical Applications。是一个基于LGPL版权协议的开源项目, 可生成各种统计图。
    它为具有技术专业背景的程序提供GUI组件和一组有用类。其目标是以基于2D方式的窗口部件来显示数据。 数据源以数值,数组或一组浮点数等方式提供, 输出方式能够是Curves(曲线),Slider(滚动栏),Dials(圆盘)。Compasses(仪表盘)等等。

    该工具库基于Qt开发,所以也继承了Qt的跨平台特性。

    qwt下载

    工程仓库  http://sourceforge.jp/projects/sfnet_qwt/
    源代码 http://cznic.dl.sourceforge.net/project/qwt/qwt/6.1.0/qwt-6.1.0.tar.bz2
    文档 http://cznic.dl.sourceforge.net/project/qwt/qwt/6.1.0/qwt-6.1.0.pdf

    编译安装

    将qwt的源代码解压,我们会发现源代码的结构非常easy
    Qwt文件文件夹非常easy,designer文件夹中存放的是Qwt插件的源代码,doc文件夹中存放的是帮助文档,example文件夹中存放的是Qwt的简 单样例的源代码,src文件夹中存放的是Qwt的源代码,textengines文件夹中存放的是数学指标语言的文本驱动引擎代码。此外Qwt文件夹还有工程文件qwt.pro。以及qwtconfig.pri配置文件。


    我们没发现configure脚本,可是发现了qwt.pro非常明显,这个源代码是以Qt工程的方式公布的。我们编译它。事实上就是编译一个qt应用程序。

    那么我们用不同版本号的qmake就会配置出不同的qwt库,比如用qmake-4.8.5-x11就编译出, x11可用的qwt, 相同qmake-4.8.5-arm就编译出了arm库了,
    那么我们怎么配置它呢。好的,非常明显,qwtconfig.pri。这名字非常明显对不正确,里面内容没多少行。
    以下我们具体看看这个配置文件的信息
    ################################################################
    # Qwt Widget Library
    # Copyright (C) 1997   Josef Wilgen
    # Copyright (C) 2002   Uwe Rathmann
    #
    # This library is free software; you can redistribute it and/or
    # modify it under the terms of the Qwt License, Version 1.0
    ################################################################
    #  
    #  这个是qwt的版本号号
    #	qwt6.1.0
    QWT_VER_MAJ      = 6
    QWT_VER_MIN      = 1
    QWT_VER_PAT      = 0
    QWT_VERSION      = $${QWT_VER_MAJ}.$${QWT_VER_MIN}.$${QWT_VER_PAT}
    
    ######################################################################
    # Install paths
    ######################################################################
    
    # 这个是安装的配置,比方安装路径等
    # 从这里我们能够看到,
    #	qwt默认安装到/usr/local下。
    #	默认建立一下几个主要文件夹doc, include, lib
    #	次要主文件夹/plugins/designer, /features
    #
    #
    QWT_INSTALL_PREFIX = $$[QT_INSTALL_PREFIX]
    
    unix {
        QWT_INSTALL_PREFIX    = /usr/local/qwt-$$QWT_VERSION
    }
    
    win32 {
        QWT_INSTALL_PREFIX    = C:/Qwt-$$QWT_VERSION
    }
    
    QWT_INSTALL_DOCS      = $${QWT_INSTALL_PREFIX}/doc
    QWT_INSTALL_HEADERS   = $${QWT_INSTALL_PREFIX}/include
    QWT_INSTALL_LIBS      = $${QWT_INSTALL_PREFIX}/lib
    
    ######################################################################
    # Designer plugin
    # creator/designer load designer plugins from certain default
    # directories ( f.e the path below QT_INSTALL_PREFIX ) and the 
    # directories listed in the QT_PLUGIN_PATH environment variable.
    # When using the path below QWT_INSTALL_PREFIX you need to
    # add $${QWT_INSTALL_PREFIX}/plugins to QT_PLUGIN_PATH in the 
    # runtime environment of designer/creator.
    ######################################################################
    
    QWT_INSTALL_PLUGINS   = $${QWT_INSTALL_PREFIX}/plugins/designer
    
    # linux distributors often organize the Qt installation
    # their way and QT_INSTALL_PREFIX doesn't offer a good
    # path. Also QT_INSTALL_PREFIX is only one of the default
    # search paths of the designer - not the Qt creator
    
    #QWT_INSTALL_PLUGINS   = $$[QT_INSTALL_PREFIX]/plugins/designer
    
    ######################################################################
    # Features
    # When building a Qwt application with qmake you might want to load
    # the compiler/linker flags, that are required to build a Qwt application
    # from qwt.prf. Therefore all you need to do is to add "CONFIG += qwt" 
    # to your project file and take care, that qwt.prf can be found by qmake.
    # ( see http://doc.trolltech.com/4.7/qmake-advanced-usage.html#adding-new-configuration-features )
    # I recommend not to install the Qwt features together with the
    # Qt features, because you will have to reinstall the Qwt features,
    # with every Qt upgrade. 
    ######################################################################
    
    QWT_INSTALL_FEATURES  = $${QWT_INSTALL_PREFIX}/features
    # QWT_INSTALL_FEATURES  = $$[QT_INSTALL_PREFIX]/features
    
    
    #
    #
    #
    # 以下这些选项非常重要了, 由于您的qt假设是自编译的, 
    #	那么非常多第三方库,或者支持库是没有被编译的
    #	并且尤其在arm上我们编译qwt时候, 编译那么多无用的支持是无用的
    #	QWT_CONFIG能够为动态的增减我们须要的库支持
    #
    ######################################################################
    # Build the static/shared libraries.
    # If QwtDll is enabled, a shared library is built, otherwise
    # it will be a static library.
    ######################################################################
    #	选择是编译成静态库还是动态库
    QWT_CONFIG           += QwtDll
    
    ######################################################################
    # QwtPlot enables all classes, that are needed to use the QwtPlot 
    # widget. 
    ######################################################################
    
    QWT_CONFIG       += QwtPlot
    
    ######################################################################
    # QwtWidgets enables all classes, that are needed to use the all other
    # widgets (sliders, dials, ...), beside QwtPlot. 
    ######################################################################
    
    QWT_CONFIG     += QwtWidgets
    
    ######################################################################
    # If you want to display svg images on the plot canvas, or
    # export a plot to a SVG document
    ######################################################################
    # 
    QWT_CONFIG     += QwtSvg
    
    ######################################################################
    # If you want to use a OpenGL plot canvas
    ######################################################################
    #  是否支持QwtOpenGL, 依赖于QtOpenGL库
    #	不必选, 
    #	假设您不须要QwtOpenGL支持, 能够凝视
    #	假设Qt库中没编译QtOpenGL, 必须凝视, 否则编译出错, 由于找不到依赖的QtOpenGL库
    #	提示的错误相似与。找不到qgl.h等有文件
    QWT_CONFIG     += QwtOpenGL
    
    ######################################################################
    # You can use the MathML renderer of the Qt solutions package to 
    # enable MathML support in Qwt. Because of license implications
    # the ( modified ) code of the MML Widget solution is included and
    # linked together with the QwtMathMLTextEngine into an own library. 
    # To use it you will have to add "CONFIG += qwtmathml"
    # to your qmake project file.
    ######################################################################
    #	是否支持QwtMathMl, 是Qwt统计数据的数学库支持
    #
    #
    #QWT_CONFIG     += QwtMathML
    
    ######################################################################
    # If you want to build the Qwt designer plugin, 
    # enable the line below.
    # Otherwise you have to build it from the designer directory.
    ######################################################################
    #	是否支持QwtDesigner, 
    #	
    QWT_CONFIG     += QwtDesigner
    
    ######################################################################
    # Compile all Qwt classes into the designer plugin instead
    # of linking it against the shared Qwt library. Has no effect
    # when QwtDesigner or QwtDll are not both enabled.
    #
    # On systems where rpath is supported ( all Unixoids ) the 
    # location of the installed Qwt library is compiled into the plugin,
    # but on Windows it might be easier to have a self contained
    # plugin to avoid any hassle with configuring the runtime
    # environment of the designer/creator.
    ######################################################################
    
    win32 {
        QWT_CONFIG     += QwtDesignerSelfContained
    }
    
    ######################################################################
    # If you want to auto build the examples, enable the line below
    # Otherwise you have to build them from the examples directory.
    ######################################################################
    #	是否编译演示样例程序
    #	qwt默认不编译演示样例程序,
    #	假设您想编译演示样例, 请取消凝视 
    #QWT_CONFIG     += QwtExamples
    
    ######################################################################
    # The playground is primarily intended for the Qwt development 
    # to explore and test new features. Nevertheless you might find
    # ideas or code snippets that help for application development
    # If you want to auto build the applications in playground, enable 
    # the line below.
    # Otherwise you have to build them from the playground directory.
    ######################################################################
    
    #QWT_CONFIG     += QwtPlayground
    
    ######################################################################
    # When Qt has been built as framework qmake wants 
    # to link frameworks instead of regular libs
    ######################################################################
    
    macx:!static:CONFIG(qt_framework, qt_framework|qt_no_framework) {
    
        QWT_CONFIG += QwtFramework
    }  
    
    好了,理解了编译的流程,我们就能够编译了。我们编译依据qt的版本号(x11, x86, arm)。分别编译出不同版本号的qwt
    ok以下開始构建, 

    建立编译文件夹

    先建立编译文件夹, 我们建立一个qwt-6.1.0文件夹,将qwt源代码qwt-6.1.0-tar.gz复制到这个文件夹下,解压出三个源代码文件夹
    tar -jxvf qwt-6.1.0-tar.gz
    cp -rf qwt-6.1.0  qwt-6.1.0-x11
    cp -rf qwt-6.1.0 qwt-6.1.0-x86
    cp -rf qwt-6.1.0 qwt-6.1.0-arm

    编译X11下的qwt库

    首先改动配置文件
    unix {
        QWT_INSTALL_PREFIX    = /usr/local/qwt-$$QWT_VERSION
    }
    安装文件夹。改动/usr/local为qt-4.8.5-x11的文件夹/opt/qt-4.8.5-x11/
    unix {
        QWT_INSTALL_PREFIX    = /opt/qt-4.8.5-x11/qwt-$$QWT_VERSION
    }
    同一时候将“#QWT_CONFIG     += QwtExamples”这行的凝视取消,由于我们想编译演示样例程序
    其它信息事实上不是必需改动,因此我们前面编译qt-x11时候。QtOpenGL等库也编译了,所以不是必需改动
    接着,qmake+make+make install
    cd qwt-6.1.0-x11
    qmake-x11
    make
    sudo make install

    编译x86下的qwt库

    首先改动配置文件。方法相似上面,

    安装路径改动为/opt/qt-4.8.5-x86/,编译演示样例程序“QWT_CONFIG     += QwtExamples

    注意:须要将QWT_CONFIG     += QwtOpenGL,此选项须要凝视,由于我们没编译x86的QtOpenGL,

    想要知道自己的qt版本号装没装这些库支持。仅仅须要去安扎un个文件夹下的include下查看有没有这些文件夹就能够了

    cd qwt-6.1.0-x86
    qmake-x86
    make
    sudo make install
    

    编译arm下的qwt库

    首先改动配置文件。方法相似上面。

    安装路径改动为/opt/qt-4.8.5-arm/,编译演示样例程序“QWT_CONFIG     += QwtExamples

    注意:须要将QWT_CONFIG     += QwtOpenGL。此选项须要凝视,由于我们没编译arm的QtOpenGL,

    cd qwt-6.1.0-arm
    qmake-arm
    make
    sudo make install

    这样我们qwt的三个不同版本号就编译好了,可是我们发现examples的演示样例程序。仅仅是在源代码包里编译好了。并没有安装到安装文件夹/opt/qwt-6.1.0*下
    也行,我们直接执行几个观察几个效果,编译后演示样例程序在源代码包/examples/bin/,总共24个演示样例程序
    x11的,双击或者./elf后直接,x86的使用qvfb执行,arm的须要先移植qwt库(这个我们稍后再说),然后./elf  -qws执行

    sinusplot显示正弦余弦曲线



    dials指南针挂钟控件演示样例。编译qwt时假设悬赏QWT_CONFIG += qWidgets的话会编译出几个可使用的空间



    在QtCreate中或者Designer中使用qwt的控件

    在x11的源代码包或者安装文件夹下的designer/plugins/desinger/libqwt_designer_plugin.so文件,就是qwt控件的链接库。我们仅仅要把这个库导入QtCreate或者Designer的控件文件夹就能够在QtCreate和Designer中使用qwt的控件了
    在qtCreate中使用qwt控件
    cp /opt/qt-4.8.5-x11/qwt-6.1.0/designer/plugins/desinger/*      $HOME/qtcreate-2.7.2/bin/plugins/designer/
    在Designer中使用qwt控件
    cp /opt/qt-4.8.5-x11/qwt-6.1.0/designer/plugins/desinger/*      /opt/qt-4.8.5-x11/plugins/desinger/
    
    验证一下。打开QtCreate新建一个工程


    执行designer



    眼下发现其它的写的比較好的

    QT5 qtcreator 增加qwt绘图插件



  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7008526.html
Copyright © 2011-2022 走看看