Qt 4.8.4 Создание релиза
Я пытаюсь создать релизную версию проекта, над которым я работаю. При сборке в Qt creator в Debug он прекрасно работает. Когда я пытаюсь создать как релиз, я получаю "не могу найти -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 файл.
IE 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)
Выпуск vs Debug, похоже, что QtSerialPortd.dll остался прежним. Я предполагаю, что это будет проблематично, когда я попробую это приложение на разных машинах.
1 ответ
Я изменил имя Qt/4.8.4/lib/libQtSerialPortd.a на Qt/4.8.4/lib/libQtSerialPort.a. Строит сейчас. Не уверен, если это будет иметь негативные последствия.