Qt 4.8.4创建发布

时间:2013-10-14 18:54:48

标签: qt release qtserialport

我正在尝试构建我正在开发的项目的发布版本。在Debug中的Qt创建器中构建它时效果很好。当我尝试构建作为发布时,我得到“找不到-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 on debug .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 个答案:

答案 0 :(得分:0)

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