如何编译编译 Qwt-5.2.0?

一、编译器不重要!但是要和IDE配套使用!!

只要是windows平台上的编译期(Mingw、MSVC)都能编译出想要的lib、dll文件!!用哪个编译期都行!!

编译 Qwt-5.2.0 的核心流程是:先根据你的 Qt 环境修改 qwtconfig.pri 配置文件,再使用 qmakemake (或 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 平台 (包括常规与交叉编译)

  1. 准备与配置 :进入源码目录,如计划常规编译可跳过此步。交叉编译(为ARM平台) 时,则需先安装对应工具链(如 gcc-arm-linux-gnueabi),并编辑 qwtconfig.pri 文件-13

  2. 执行编译安装:在终端中依次执行:

    • qmake:生成 Makefile-2

    • make:开始编译-2

    • sudo make install:将库文件安装到系统(默认路径 /usr/local/qwt-5.2.0-2

🪟 Windows 平台 (Qt Creator / Visual Studio)

  1. 配置与编译 :可用 Qt Creator 直接打开 qwt.pro 文件-4。或用命令行 ,打开 "Qt 命令提示符" 或 "VS 命令提示符"-20,进入源码目录,依次执行:

    • qmake qwt.pro-18

    • mingw32-make (MinGW环境) 或 nmake (MSVC环境)-18-20

  2. 安装部署 :将编译生成的 .dll.a/.lib 文件复制到 Qt 的 binlib 目录-4;将 src 目录下所有头文件复制到 include/qwt/-4;将 designer 插件文件复制到 plugins/designer/ 目录-4

🍎 macOS 平台

macOS 的编译步骤与 Linux 类似。在终端中进入源码目录,依次运行 qmakemakesudo make install 即可。注意,macOS 下生成的库文件后缀为 .dylib-。

💡 常见问题与解决方案

  • 编译错误 "找不到头文件" :检查 .pro 文件中的 INCLUDEPATHLIBS 路径是否正确--4

  • 链接错误或 "未定义的符号" :确保已将 Qwt 库目录添加到 LIBS 路径-,并检查 qwtconfig.priQWT_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 编译 (推荐)

  1. 恢复被破坏的 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)。

  2. 打开正确的编译环境

    • 从开始菜单中找到 Qt 4.8.7 Command Prompt 并打开。这个提示符会同时为你配置好 Qt 和 VS2008 的编译环境。

    • 检查环境是否正确。运行以下命令,确保没有报错且版本正确:

      复制代码
      qmake -v
      nmake /?
  3. 修改 Qwt 源码

    针对 MSVC 编译器,修改 qwt_valuelist.h

    • 将第 25 行和 38 行的 #if defined(QWT_TEMPLATEDLL) 替换为 #if defined(QWT_TEMPLATEDLL) && (QT_VERSION < 0x040600)--12-34
  4. 用 nmake 编译 Qwt

    复制代码
    cd C:\Qt\qwt-5.2.0
    nmake distclean   # 清理旧文件
    qmake qwt.pro
    nmake
    nmake install
  5. (可选)生成 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 的包含路径,你需要将头文件复制到一个统一的目录。

  1. C:\Qt\4.8.7\include\ 下新建一个名为 qwt 的文件夹。

  2. 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.dllqwt5.lib),则只需复制 Release 版本即可。

📋 第四步:部署 Qt Designer 插件(可选)

如果你希望在 Qt Designer 中直接使用 Qwt 控件,需要额外部署一个插件。

  1. 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;
}

如果编译和运行都没有报错,说明部署成功。

相关推荐
雾岛听蓝8 小时前
Qt 输入与多元素控件详解
开发语言·经验分享·笔记·qt
怎么没有名字注册了啊8 小时前
解决qt制作软件.app迁移问题(发布)Mac
开发语言·qt
輕華1 天前
PyQt5入门实战:安装、QtDesigner设计与PyUIC转换完整指南
开发语言·qt
雾岛听蓝1 天前
Qt Widget控件属性详解
开发语言·经验分享·笔记·qt
大橘1 天前
【qml-5.1】qml与c++交互(QML_ELEMENT/QML_SINGLETON)
开发语言·c++·qt·交互·qml
雾岛听蓝1 天前
Qt按钮与标签控件详解
开发语言·经验分享·笔记·qt
碎碎念的安静1 天前
WPF 与 Qt 进程间通信(IPC)
开发语言·qt·wpf
(Charon)1 天前
【Qt/C++】Qt/C++ 中 :: 和 . 到底有什么区别?
开发语言·c++·qt
苕皮蓝牙土豆2 天前
Qt图形视图框架入门:坐标系统与鼠标事件处理详解
c++·qt