2013-10-14 3 views
0

Я пытаюсь создать выпускную версию проекта, над которым я работаю. При создании в Qt-создателе в Debug он отлично работает. Когда я пытаюсь создать релиз, я получаю «не могу найти -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} 
    } 
} 

Edit:

После выяснить, я могу изменить имя файла, удалив д в конце я понял, что все библиотеки, включенные в exe, которые встроены, включают файлы, которые не заканчиваются на «d.dll», за исключением файла QtSerialPortd.dll.

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 против Debug, это выглядит как 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)' - для выпуска и debug, соответственно. –