Qt 4.8.4 创建版本

Posted

技术标签:

【中文标题】Qt 4.8.4 创建版本【英文标题】:Qt 4.8.4 Creating release 【发布时间】:2013-10-14 18:54:48 【问题描述】:

我正在尝试构建我正在处理的项目的发布版本。在 Debug 中构建 Qt creator 时效果很好。当我尝试构建版本时,我得到“找不到 -lQtSerialPort”。 Qt 4.8.4 不包括 QtSerialPort。我不得不手动添加。我假设有一些我忘记包括在这里的东西。可能在 .pro 文件中?

另外,我注意到在我的 Qt/4.8.4/lib 目录中有很多 .prl 文件。 QtSerialPortd.prl 有一个。这是这里唯一一个似乎有 .dll 版本的。不确定这是否重要。

Makefile 包括:

Makefile: ???.pro
    c:/Qt/4.8.4/mkspecs/features/serialport.prf \

$(QMAKE) -config release -o Makefile ???.pro

c:/Qt/4.8.4/mkspecs/features/serialport.prf:

serialport.prf 看起来像这样:

qtAddLibrary(QtSerialPort)

!isEmpty(QTSERIALPORT_BUILD_ROOT) 
    INCLUDEPATH -= $$QMAKE_INCDIR_QT/QtSerialPort
    QMAKE_INCDIR += $$QTSERIALPORT_BUILD_ROOT/include $$QTSERIALPORT_BUILD_ROOT/include/QtSerialPort

    QTSERIALPORT_BUILD_SUBDIR = src/serialport
    debug_and_release_target 
        CONFIG(debug, debug|release) 
            QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/debug
         else 
            QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/release
        
    

    QMAKE_LIBDIR += $$QTSERIALPORT_BUILD_ROOT/$$QTSERIALPORT_BUILD_SUBDIR


mac 
    LIBS -= -framework QtSerialPort$$QT_LIBINFIX

   if(!debug_and_release|build_pass):CONFIG(debug, debug|release) 
       LIBS += -lQtSerialPort$$QT_LIBINFIX_debug
    else 
       LIBS += -lQtSerialPort$$QT_LIBINFIX
   

编辑:

在弄清楚我可以通过删除末尾的 d 来更改文件名后,我意识到构建的 exe 中包含的所有库都包含不以“d.dll”结尾的文件,但例外QtSerialPortd.dll 文件。

I.E ldd 上的调试.exe:

QtCored4.dll => /cygdrive/c/Qt/4.8.4/bin/QtCored4.dll (0x69cc0000)
QtGuid4.dll => /cygdrive/c/Qt/4.8.4/bin/QtGuid4.dll (0xf30000)
QtNetworkd4.dll => /cygdrive/c/Qt/4.8.4/bin/QtNetworkd4.dll (0x6cb40000)
QtSerialPortd.dll => /cygdrive/c/Qt/4.8.4/bin/QtSerialPortd.dll (0x63680000)

ldd 上发布的.exe:

QtCore4.dll => /cygdrive/c/Qt/4.8.4/bin/QtCore4.dll (0x6e0c0000)
QtGui4.dll => /cygdrive/c/Qt/4.8.4/bin/QtGui4.dll (0x67700000)
QtNetwork4.dll => /cygdrive/c/Qt/4.8.4/bin/QtNetwork4.dll (0x65c80000)
QtSerialPortd.dll => /cygdrive/c/Qt/4.8.4/bin/QtSerialPortd.dll (0x63680000)

Release vs Debug,看起来 QtSerialPortd.dll 保持不变。我猜当我在不同的机器上尝试这个应用程序时,这将会有问题。

【问题讨论】:

【参考方案1】:

我将 Qt/4.8.4/lib/libQtSerialPortd.a 的名称更改为 Qt/4.8.4/lib/libQtSerialPort.a。它现在正在构建。不确定这是否会产生不利影响。

【讨论】:

您需要一个不同的库来进行调试和发布构建。您可以使用 config(release, debug|release)config(debug, debug|release) 进行测试 - 分别用于发布和调试。

以上是关于Qt 4.8.4 创建版本的主要内容,如果未能解决你的问题,请参考以下文章

Qt 4.8.4 Release 版本不适用于 Windows 7 64 位

Qt Creator 2.7.1 和 Qt 4.8.4 无法远程调试库

如何在ubuntu 12.04上安装Qt 4.8.4

Qt 4.8.4 mingw (gcc 4.7) 可以编译但不能运行

Qt 4.8.4 嵌入式 Linux 手柄电源按钮按键

Qt 4.8.4 Cross-Compiled for Embedded Linux 失败并出现 QNetworkProxy 错误