Comment faire pour spécifier une dépendance de fichier de bibliothèque pour qmake dans Qt?

StackOverflow https://stackoverflow.com/questions/781494

  •  13-09-2019
  •  | 
  •  

Question

Avoir un fichier SomeLib.pro qui contient:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

Ensuite, dans une SomeApp.pro dépendante:

..
debug:LIBS += -lSomeLib_debug
..

Comment puis-je forcer SomeApp à construire si je touchais somelib dans qmake?

Était-ce utile?

La solution

Il est laid parce que vous devez donner le nom exact du fichier de bibliothèque, mais cela devrait fonctionner:

TARGETDEPS + = libtruc.a

Autres conseils

QT Creator fera le travail si vous cliquez sur « Ajouter la bibliothèque ... » dans le menu contextuel du projet qui devrait inclure la bibliothèque.

Ces variables sont configurées automatiquement pour vous:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

Voir aussi http: //doc.qt. digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

En réponse au commentaire de Zahir, il est peut-être intéressant de souligner que la mention de cette dépendance dans les fichiers qmake est inutile si vous utilisez des DLL, mais est essentiel si votre exe dépend d'une bibliothèque statique.

qmake ne fournit pas cette capacité.

Au lieu de cela, mettez votre application et lib dans les sous-répertoires, puis créer un Makefile dans leur répertoire parent qui ressemble à ceci:

all: FRC
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE)

FRC:

Ensuite, toujours exécuter make de ce répertoire.

je:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a

Il fonctionne, mais il est maladroit, car il est nécessaire de spécifier le chemin complet à la bibliothèque, qui est différent pour chaque système d'exploitation / compilateur.

sûrement que ne peut pas être possible, vous parlez d'utiliser qmake pour faire une recherche inversée de dépendance? donc ce que tu veux est pour elle de construire l'application B (et toute autre application dépendant de la bibliothèque A) après avoir effectué un changement à la bibliothèque A?

qui est un peu comme dire recompiler toutes les applications de base visuelles si vbrun300.dll est mis à jour?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top