MingW下编译QWt 6.2.0
-
下载qwt最新版本,用git工具 git clone下载源码
git clone https://git.code.sf.net/p/qwt/git qwt-git
或者使用我下载的 qwt 2.6.0
链接:https://pan.baidu.com/s/1KZI-L10N90TJobeqqPYBqw?pwd=pq1o
提取码:pq1o -
下载安装Qt 5.15.2
链接:https://pan.baidu.com/s/1mpcVYjzjL0udYAh0TGjtrA?pwd=2sz5
提取码:2sz5 -
用Qt 5.15.2 自带的Qt Creator 5.0.2打开qwt.pro文件
-
编译前的参数修改(网上一找一大把)
打开QMAKE_RPATHDIR *=$${QWT_INSTALL_LIBS}
注释掉src/qwtbuild下的qwtbuild.pri里的CONFIG += debug_and_release
因为你的工程要链接的第三方库肯定是release版本的库了
classinclude下的qwtbuil下的qwtbuild.pri里的 CONFIG += debug_and_release也是要注释掉#
编译MSVC会编译不通过的原因,本质原因应该不是修改一个安装目录就可以了(以后来研究),把qwtconfig.pri下的QWT_INSTALL_PREFIX路径修改成自己Qt安装使用的编译器下的路径里的include里新建自己的qwt头文件目录(qwtbuld.pri和qwtconfig.pro虽然有多个,其实点进去就知道都是同一个,修改一处就都修改了)
-
编译的顺序是先【执行qmake】,然后开始【构建】
需要选择release版本,在构建里选择Release
-
qmake完成,及构建完成后,会在构建目录下生成编译文件xx.dll和xx.a文件
-
将qwt.dll和qwtd.dll放到本地的Qt 5.12.12安装目录的库目录中,这样基于Qt 5.12.12的自己的应用就可以使用qwt开发了,因为安装了qwt库
-
qwt的编译里还生成了designer.dll,如果将该designer.dll放到本地Qt 5.12.12的安装目录的designer插件中,那么在Qt开发中的designer里可以直接拖动使用qwt控件,那也是非常方便的。
放到本地Qt的designer插件目录中
-
用Qt Creator新建自己的应用程序,用Qt Designer打开mainwindow.ui
在Qt设计师中左侧控件拉到最下面看到qwt控件,此处你可以兴奋一分钟,将qwt控件拖动到右边,然后保存,然后qmake你的工程,构建并运行,就把qwt安装并运行到了你的个人Qt工程中了
MSVC 下编译QWT 6.2.0
说实话在MingW下载编译qwt是比较智障无难度的,因为Qt的安装过程中会把MingW编译器一起安装了,所以在Qt构建工具中MingW编译器的选择也十分简单,一般不会出错,但是MSVC编译器是随着Visual Studio (VS2022 VS2017)安装的,所以Qt的构建工具中经常是默认的MSVC版本的项目构建是黄色感叹号,没法直接使用其新建Qt MSVC工程,所以如果你的Qt工具里Qt MSVC构建都还没有配置好,然后你用Qt Creator打开qwt.pro去编译MSVC版本的库,会遇到编译问题,所以先解决Qt构建问题。
- 我安装的是VS2022,所以编译器是MSVC2017,但是Qt构建里默认MSVC2017无法使用,cmake也是无法使用。
我的图片中MSVC2015 64bit编译可以构建那个纯粹是扯淡,因为我清楚我的本机是VS2022 MSVC2017不可能是MSVC2015,即便选择了MSVC2015,最后工程还是带黄色感叹哈,所以在编译器里进行配置 - 这个克隆的方法也是网上一抓一大把,其实原因很明显我就死死咬住我是MSVC2017就不会出错了
如果你选择C++里或C里列出的C++ Complier或C Complier会出问题,因为其实他们是MSVC2005,错得离谱,所以选中一个编译器然后点击右边的克隆
ABI里面选择自定义,然后MSVC2005就可以选择了,肯定是果断选择自己VS对应的编译器,我的是MSVC2017
确定OK之后,在Qt Creator新建项目,选择克隆的编译器的构建就可以创建你本机的MSVC版本Qt项目了。 - 回到编译qwt的MSVC版本,在构建的过程中可以看到是否是真正使用自己的编译器进行构建
像我的构建里是MSVC 64bit,所以qmake和构建就没有再报错。 - MSVC2017里把qwt的库,放到本地对应目录中
放到本机MSVC的库目录中,说到这里不得不为Qt的设计点赞,这种用动态库dll扩展插件,来扩展功能,确实就是牛逼Plus。
把两个对应的lib文件放到Qt本地lib安装目录下
把designer下的qwt的designer插件也放到本地qt的designer设计师插件目录下
5. 新建Qt MSVC工程
# .pro里添加 qwt的配置
CONFIG += qwt
DEFINES += QT_DLL QWT_DLL
LIBS += -L"C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\lib" -lqwtd
LIBS += -L"C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\lib" -lqwt
INCLUDEPATH += D:\develop\qwt\qwt-git\src
6. 其实到这里很多时候已经完成了,但是这里很倔强,跟我开了个玩笑
: static_assert failed "Error in C++ Standard Library usage."
但是程序员天生就是对Bug兴奋,那就老套路了,挨字分析error总能找出问题所在
就是VS的编译器版本的问题,始终如一地选择自己本地自己确认的编译器版本,就不会有问题了
-------------------------2024-1-20---------------------------
看到clang的编译器错误,肯定是不合理的,我的就是MSVC2017,所以针对项目选了过来
新建了一个项目用msvc2017克隆版本编译器。
跟前面一样把ui用designer打开,然后拖几个qwt控件。我的qwt的头文件即src文件的目录修改了,所以最开始编译还报错找不到文件,然后改成了真实路径。
到这里所有问题都已经解决了。但是留下一个问题,我要把qwt的库及头文件打包我的个人项目3rdparty中,如何让cmake找到我的qwt package,程序员就是永远走在解决一个问题又开始下一个问题的路上。