2013-10-14 70 views
0

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

另外,我注意到我的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文件。在调试的.exe

即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:

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) 

发布VS调试,它看起来像QtSerialPortd.dll保持不变。我猜测,当我在不同的机器上尝试这个应用程序时,这会有问题。

回答

0

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

+1

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