Lier avec une lib debug/release avec qmake / Qt Creator

J'utilise Qt Creator et j'ai un projet GUI Qt qui dépend d'un projet de bibliothèque statique C++. Je veux lier la version release de l'application GUI avec la version release du .lib et la version de débogage de l'application GUI avec le débogage .lib. J'ai découvert comment ajouter des bibliothèques supplémentaires au projet en incluant une ligne comme la suivante dans mon fichier. pro:

LIBS += -L./libfolder -lmylib.lib

Mais je ne vois pas comment je peux utiliser une commande -L différente pour les versions release et debug.

Est il soutien dans qmake pour le faire?

24
demandé sur Rob 2009-07-15 12:26:35

2 réponses

Dans votre fichier de projet, vous pouvez faire quelque chose comme ceci

debug {
    LIBS += -L./libfolder -lmydebuglib.lib
}

release {
    LIBS += -L./libfolder -lmyreleaselib.lib
}

Le bit à l'intérieur des accolades de débogage est utilisé si DEBUG a été ajouté à la variable CONFIG qmake, de même les éléments à l'intérieur des parenthèses de version sont inclus si RELEASE a été ajouté à la variable de configuration.

Vous pouvez également utiliser "!debug "plutôt que" release " (c'est-à-dire lorsque debug n'est pas dans la configuration)

, Vous pouvez trouver plus d'informations sur qmake ici.

22
répondu Nick 2018-05-02 10:00:47

La normale

debug:LIBS += ...
else:LIBS += ...

La Solution se casse lorsque les utilisateurs utilisent naïvement CONFIG += debug ou CONFIG += release pour basculer entre les versions debug et release (et ils le font; personne ne se souvient de dire CONFIG -= release release_and_debug avant CONFIG += debug :).

C'est la manière canonique de portée sur debug:

CONFIG( debug, debug|release ) {
    # debug
    QMAKE_LIBDIR += "path/to/debug/lib"
} else {
    # release
    QMAKE_LIBDIR += "path/to/release/lib"
}

Cf. les documents qmake .

EDIT 2013-11-17: N'utilisez pas de -Lfoo dans LIBS. La manière canonique est d'ajouter les chemins (sans -L) à QMAKE_LIBDIR.

42
répondu Marc Mutz - mmutz 2013-11-17 07:47:39