2013-10-14 101 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)'來分別進行測試。 –