小于的老巢分享 http://blog.sciencenet.cn/u/yuzhan 不喜无病呻吟,只爱直截了当

博文

在Windows XP上从头开始编译qtiplot 0.9.7.8

已有 9563 次阅读 2009-11-6 18:44 |个人分类:编程|系统分类:科研笔记| qtiplot

※感谢

非常感谢 Fockez Zhangyanhoo 在博客上所发表的编译教程。如果没有对你们教程的学习,我是无法独立编译qtiplo
t的。再次感谢你们的热心分享。

源代码:
   

qtiplot-0.9.7.8.zip 下载自qtiplot官网,解压缩在 c:,去掉目录的版本号后目录名为c:qtiplot。

编译环境:

qt-sdk-win-opensource-2009.03.1.exe   下载自 qt官网,安装在c:qt 。

辅助工具:

MinGW Utilities  (需要其中的reimp.exe)下载自mingw官网,解压缩后,bin与doc目录中的文件分别复制在c:qt2009.03mingw 下的bin与doc目录中。

编译方式:

编译都是在Qt Command Prompt下执行,因为Qt Command Prompt运行时已运行环境变量设置,所以并未另外设置环境变量。

第三方库:

1、可以在 http://gnuwin32.sourceforge.net 下载到gsl、zlib与libpng等的已编译好的包(Developer files)。解压缩后分别放置在c:qtiplot3rdparty下,目录名分别为gsl、zlib与libpng。其中,在解压qtiplot源码包时,生成zlib目录及4个文件保留勿动,下载的zlib的Developer files包解压缩在zlib目录中的include与lib中。复制libpng12.dll.a为libpng.a,放置在相同目录中。

2、下载EmfEngine与muparser的源码包,解压缩在c:qtiplot3rdparty下,去掉目录名称的版本号。

3、为了编译EmfEngine,需要下载并设置gdiplus for mingw。网址为http://alfps.izfree.com/libraries/cpp/gdiplus_for_mingw/ 将其中的incude与lib中的所有文件分别复制到c:qt2009.03qt下的include与lib中。并且还需要http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip中的gdiplus.lib。

4、 全部解压后3rdparty下的子目录名称如下:
 3rdparty
     -- EmfEngine
     -- gsl
     -- libpng
     -- muparser
     -- qwt
     -- qwtplot3d
     -- zlib
 其中qwt、qwtplot3d 目录与zlib中的minigzip.c、zlib.h等4个文件为qtiplot源码包自带的,我不需要导入Origin文件功能,删掉liborigin目录。

编译:

1、EmfEngine
  
Qt Command Prompt下运行
 reimp  gdiplus.lib
将生成的libgdiplus.a复制到C:Qt2009.03qtlib中。然后到EmfEngine下,顺序执行
 qmake

mingw32-make
生成libEmfEngine.a。


2、muparser

Qt Command Prompt下进入muparser的build文件夹,运行
 mingw32-make -fmakefile.mingw
生成libmuparser.a。

3、qwtplot3d

打开qwtplot3d.pri 与 qwtplot3d.pro,注释掉
 win32:CONFIG -= zlib
然后设置zlib的目录,比如我的就是
 win32:LIBS += C:/qtiplot/3rdparty/zlib/lib/zlib.lib
还有一个重要的就是把
qwtplot3d.pro中的第三行中 rebug 变为 release。
 CONFIG           += qt warn_on opengl thread zlib release
这个不需要编译,编译qtiplot是会带上一起编译的。

4、qtiplot

经过前面的准备工作,终于要进入正题了。打开C:qtiplotqtiplot.pro,删掉第4行:
 manual 
这是由于我不需要教程。打开C:qtiplotqtiplotqtiplot.pro,删掉或注释掉下面几句:
 SCRIPTING_LANGS += Python 
DEFINES         += SCRIPTING_DIALOG
删除或注释掉所有含有boost与origin的语句,同时删除TRANSLATIONS与DOCUMENTATION部分的全部内容。删除或注释掉下面的所有语句:
 INSTALLS        += translations
INSTALLS        += manual
INSTALLS        += documentation

win32: translations.path = $INSTALLBASE/translations
win32: manual.path = $INSTALLBASE/manual
win32: documentation.path = $INSTALLBASE/doc

DEFINES       += TRANSLATIONS_PATH="\"$replace(translations.path," "," ")\"
DEFINES       += MANUAL_PATH="\"$replace(manual.path," "," ")\"
解除对于emf输出的注释:
 CONFIG          += HAVE_EMF
正确设置zlib、libpng的include与lib目录。比如我的就是:
 INCLUDEPATH       += ../3rdparty/zlib/include
win32:LIBS        += ../3rdparty/zlib/lib/libz.a

INCLUDEPATH += ../3rdparty/libpng/include
LIBS        += ../3rdparty/libpng/lib/libpng.a
还需要修改ApplicationWindow.cpp。在qtiplotqtiplotsrccore目录中找到后,注释掉下面这一句:
 #include "importOPJ.h"
找到下面这个函数,
 ApplicationWindow* ApplicationWindow::importOPJ(const QString& filename, bool factorySettings, 
bool newProject)
注释掉除最后一句后全部内容,使它实际上变成这个样子:
 ApplicationWindow* ApplicationWindow::importOPJ(const QString& filename, bool factorySettings, bool newProject)
{
    return 0;
}
还没有完。找到这一句
 ImportOPJ(this, fn);
把它改为:
 importOPJ(fn, 0, 0);     //注意大小写
如果喜欢的话,可以在关于中加入你自己的信息。找到这个函数
 void ApplicationWindow::about()
在其中适当位置加入:
  text += "<h6>" + tr("Compiled by YOURNAME") + "</h6>";
随后就是qmake 与mingw32-make 了。顺利的话,稍微等待一会qtiplot.exe就编译成功了。

运行库

只有qtiplot.exe是无法运行的,还需要运行库。首先到http://gnuwin32.sourceforge.net 下载zlib与libpng的Binaries包,需要其中的zlib1.dll与libpng3.dll。然后到qt安装目录中找到下面的文件:
 mingwm10.dll
QtCore4.dll
QtGui4.dll
QtXml4.dll
QtSql4.dll
QtSvg4.dll
Qt3Support4.dll
QtNetwork4.dll
QtAssistantClient4.dll
QtOpenGL4.dll
需要注意的是一定要使用 C:Qt2009.03qtbin 目录中的这些文件。

把这些运行库和qtplot.exe放在一起后就可以运行了。


https://blog.sciencenet.cn/blog-335764-269113.html


下一篇:BZ反应试料比例
收藏 IP: .*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 12:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部