一、编译器不重要!但是要和IDE配套使用!!
只要是windows平台上的编译期(Mingw、MSVC)都能编译出想要的lib、dll文件!!用哪个编译期都行!!
编译 Qwt-5.2.0 的核心流程是:先根据你的 Qt 环境修改 qwtconfig.pri 配置文件,再使用 qmake 和 make (或 nmake/mingw32-make) 命令进行编译和安装。
📜 关键前提与通用准备
-
安装 Qt :确保已安装 Qt 开发环境(Qt 4.x 或更早版本)。Qwt 5.2.0 是一个较旧的版本,与新版的 Qt 5/6 可能不兼容--4。
-
获取源码 :从 Qwt 官方网站或 SourceForge 下载
qwt-5.2.0.tar.bz2(Linux)或qwt-5.2.0.zip(Windows)-。 -
修改配置文件 :根据你的编译目标(如调试版/发布版)修改根目录下的
qwtconfig.pri文件-4。例如,Windows 下若需调试版,可将CONFIG += release注释掉,并取消CONFIG += debug的注释。
🐧 Linux 平台 (包括常规与交叉编译)
-
准备与配置 :进入源码目录,如计划常规编译可跳过此步。交叉编译(为ARM平台) 时,则需先安装对应工具链(如
gcc-arm-linux-gnueabi),并编辑qwtconfig.pri文件-13。 -
执行编译安装:在终端中依次执行:
🪟 Windows 平台 (Qt Creator / Visual Studio)
-
配置与编译 :可用 Qt Creator 直接打开
qwt.pro文件-4。或用命令行 ,打开 "Qt 命令提示符" 或 "VS 命令提示符"-20,进入源码目录,依次执行: -
安装部署 :将编译生成的
.dll和.a/.lib文件复制到 Qt 的bin和lib目录-4;将src目录下所有头文件复制到include/qwt/-4;将 designer 插件文件复制到plugins/designer/目录-4。
🍎 macOS 平台
macOS 的编译步骤与 Linux 类似。在终端中进入源码目录,依次运行 qmake、make 和 sudo make install 即可。注意,macOS 下生成的库文件后缀为 .dylib-。
💡 常见问题与解决方案
-
编译错误 "找不到头文件" :检查
.pro文件中的INCLUDEPATH和LIBS路径是否正确--4。 -
链接错误或 "未定义的符号" :确保已将 Qwt 库目录添加到
LIBS路径-,并检查qwtconfig.pri中QWT_CONFIG等配置与你的 Qt 版本匹配。 -
Qt 版本不兼容 (QHash 错误) :如果使用 Qt 4.6 及以上版本编译失败,可编辑
src/qwt_valuelist.h文件,将第 25 行和 38 行的#if defined(QWT_TEMPLATEDLL)改为#if defined(QWT_TEMPLATEDLL) && (QT_VERSION < 0x040600)-4。
二、
因为安装的QT4.8(vs2008 opensource)是为VS2008专用的版本,=》所以,只能用MSVC编译。
你安装的 Qt 4.8 (VS2008 Opensource) 版本,是为 MSVC 2008 编译器设计的。而你用之前 MinGW 的思路去修改 mkspecs/default/qmake.conf,或是添加 qHash(double) 函数,这些方法完全不适用,反而破坏了 Qt 原本的 MSVC 配置-30。
根本问题在于:环境与编译器的不匹配,以及未对 Qwt 源码进行必要的修补。
现在,你有两个选择来修复这个问题,建议按顺序尝试。
方案一:使用 Qt 命令行 + nmake 编译 (推荐)
-
恢复被破坏的 Qt 环境
首先,需要撤销你之前错误的修改。
-
将
C:\Qt\4.8.7\mkspecs\default\qmake.conf文件内容恢复原样:QMAKESPEC_ORIGINAL=C:/Qt/4.8.7/mkspecs/win32-msvc2008 include(../win32-msvc2008/qmake.conf) -
删除你手动添加的所有系统环境变量(如
QMAKESPEC)。
-
-
打开正确的编译环境
-
从开始菜单中找到
Qt 4.8.7 Command Prompt并打开。这个提示符会同时为你配置好 Qt 和 VS2008 的编译环境。 -
检查环境是否正确。运行以下命令,确保没有报错且版本正确:
qmake -v nmake /?
-
-
修改 Qwt 源码
针对 MSVC 编译器,修改
qwt_valuelist.h: -
用 nmake 编译 Qwt
cd C:\Qt\qwt-5.2.0 nmake distclean # 清理旧文件 qmake qwt.pro nmake nmake install -
(可选)生成 VS 工程文件直接编译
如果你更习惯在 VS 界面中编译,可以先运行以下命令生成
.vcproj文件:qmake -tp vc qwt.pro然后用 VS2008 打开生成的
qwt.vcproj进行编译。
方案二:下载匹配的 MinGW 版本 (备选)
如果你更愿意用 MinGW 和 Qt Creator,最简单的方法是重新下载一个 MinGW 版本的 Qt 4.8。
-
访问 Qt 官方下载页面:
https://download.qt.io/archive/qt/4.8/4.8.7/ -
下载
qt-opensource-windows-x86-mingw482-4.8.7.exe这个文件,这是官方为 MinGW 预编译的版本。安装后,之前的修改(如添加qHash(double)重载)就会生效。
额外提示
-
权限问题 :执行
nmake install时,如果目标路径在C:\Qt下,请确保你以管理员身份运行 Qt 命令行。 -
关于 qwtconfig.pri :编译前,建议检查并配置
qwtconfig.pri,例如为 debug 和 release 版本设置不同的输出路径,避免文件覆盖-2。 -
关于 qHash(double) 重载 :在 MSVC 环境下,Qwt 5.2.0 通常不需要添加
qHash(double)重载。如果编译时仍报qHash相关错误,确保你对qwt_valuelist.h的修改(第 25/38 行)是正确的-12-34。
三、如果用MSVC编译了。但是不想用VS2008打开,仍然想要QTCreator打开,怎么办?
nmake之后,如何把lib等文件添加到QT4.8.7安装目录对应文件下?
已思考(用时 3 秒)
我们需为用户提供明确的操作步骤,指导如何将编译好的Qwt库文件部署到Qt 4.8.7的安装目录中,以便在项目中使用。用户使用的是MSVC版本的Qt 4.8.7,编译过程使用nmake,生成的文件位于qwt-5.2.0目录下的lib和src中。需要说明如何复制头文件、库文件和动态链接库到Qt对应的include、lib和bin目录,并提醒项目中的配置方法。
nmake 编译完成后,生成的库文件默认位于 Qwt 源码目录下的 lib 文件夹中。你需要手动将这些文件部署到 Qt 4.8.7 的安装目录下,这样你的项目才能找到并链接它们。
📂 第一步:找到编译生成的 Qwt 文件
在你的 Qwt 源码目录 C:\Qt\qwt-5.2.0 下,会看到以下关键文件夹:
| 文件夹/文件 | 内容 | 部署目标 |
|---|---|---|
lib\ |
qwtd5.dll (Debug), qwt5.dll (Release), qwtd5.lib, qwt5.lib |
见下方详细说明 |
src\ |
所有 .h 头文件 |
C:\Qt\4.8.7\include\qwt\ |
📋 第二步:部署头文件
为了让 Qt 找到 Qwt 的包含路径,你需要将头文件复制到一个统一的目录。
-
在
C:\Qt\4.8.7\include\下新建一个名为qwt的文件夹。 -
将
C:\Qt\qwt-5.2.0\src\目录下的所有.h头文件 复制到C:\Qt\4.8.7\include\qwt\中。
📋 第三步:部署库文件(.lib 和 .dll)
-
.dll文件(动态链接库) :需要放在程序运行时能找到的地方,通常复制到C:\Qt\4.8.7\bin\。 -
.lib文件(导入库) :需要放在链接器能找到的地方,复制到C:\Qt\4.8.7\lib\。
# 复制 Debug 版本
copy C:\Qt\qwt-5.2.0\lib\qwtd5.dll C:\Qt\4.8.7\bin\
copy C:\Qt\qwt-5.2.0\lib\qwtd5.lib C:\Qt\4.8.7\lib\
# 复制 Release 版本
copy C:\Qt\qwt-5.2.0\lib\qwt5.dll C:\Qt\4.8.7\bin\
copy C:\Qt\qwt-5.2.0\lib\qwt5.lib C:\Qt\4.8.7\lib\
注意 :如果你的编译只生成了 Release 版本(如
qwt5.dll和qwt5.lib),则只需复制 Release 版本即可。
📋 第四步:部署 Qt Designer 插件(可选)
如果你希望在 Qt Designer 中直接使用 Qwt 控件,需要额外部署一个插件。
- 将
C:\Qt\qwt-5.2.0\designer\plugins\designer\目录下的qwt_designer_plugin5.dll(或类似名称)复制到:
C:\Qt\4.8.7\plugins\designer\
🧪 第五步:在你的 Qt 项目中配置 Qwt
部署完成后,你需要在项目的 .pro 文件中添加以下配置,告诉 qmake 去哪里找头文件和库:
qmake
# 包含路径
INCLUDEPATH += C:\Qt\4.8.7\include\qwt
# 链接库
CONFIG(debug, debug|release) {
LIBS += -L"C:\Qt\4.8.7\lib" -lqwtd5
} else {
LIBS += -L"C:\Qt\4.8.7\lib" -lqwt5
}
✅ 验证部署是否成功
可以在项目中包含一个 Qwt 头文件,测试是否能正常编译:
cpp
#include <qwt_plot.h>
int main() {
QwtPlot plot;
return 0;
}
如果编译和运行都没有报错,说明部署成功。