2013-10-14 1 views
0

Je suis en train de créer une version de publication d'un projet sur lequel je travaille. Lors de la construction dans Qt creator dans Debug, cela fonctionne très bien. Quand j'essaye de construire en tant que version, j'obtiens "impossible de trouver -lQtSerialPort". Qt 4.8.4 n'inclut pas QtSerialPort. Je devais l'ajouter manuellement. Je suppose qu'il y a quelque chose que j'oublie d'inclure ici. Peut-être dans le fichier .pro?Qt 4.8.4 Création de la version

Aussi, j'ai remarqué dans mon répertoire Qt/4.8.4/lib que j'ai beaucoup de fichiers .prl. Il y en a un pour QtSerialPortd.prl. C'est le seul ici qui semble avoir une version .dll. Je ne sais pas si c'est important ou non.

Makefile comprend ceci:

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 ressemble à ceci:

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:

Après avoir déterminé que je peux changer le nom du fichier en supprimant le d à la fin, j'ai réalisé que toutes les bibliothèques incluses dans l'exe qui est construit incluent des fichiers qui ne se terminent pas dans 'd.dll' à l'exception du fichier QtSerialPortd.dll.

i.e. ldd sur le fichier .exe de débogage:

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 sur le .exe de sortie:

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 de presse, il semble que le QtSerialPortd.dll est resté le même. Je suppose que cela va poser problème quand j'essaie cette application sur différentes machines.

Répondre

0

J'ai changé le nom de Qt/4.8.4/lib/libQtSerialPortd.a en Qt/4.8.4/lib/libQtSerialPort.a. Il construit maintenant. Je ne sais pas si cela va avoir des effets néfastes.

+1

Vous avez besoin d'une bibliothèque différente pour les versions de débogage et de version. Vous pouvez tester cela en utilisant 'config (release, debug | release)' et 'config (debug, debug | release)' - pour la libération et le débogage, respectivement. –

Questions connexes