Łączenie z debugowaniem/release lib z qmake / Qt Creator

Używam Qt Creator i mam projekt Qt GUI, który zależy od projektu biblioteki statycznej C++. Chcę połączyć wersję release aplikacji GUI z Release build of the .lib i wydanie debug aplikacji GUI z debug .lib. Dowiedzialem sie jak dodac dodatkowe biblioteki do projektu, zawierajac w pliku .pro linijke jak nastepujaca:

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

Ale Nie wiem, jak mogę użyć innej komendy -L do wydania i debugowania kompilacji.

Jest jest wsparcie w qmake, aby to zrobić?

 24
Author: Rob, 2009-07-15

2 answers

W pliku projektu możesz zrobić coś takiego

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

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

Bit wewnątrz nawiasów debugowania jest używany, jeśli DEBUG został dodany do zmiennej CONFIG qmake, podobnie rzeczy wewnątrz nawiasów release są dołączane, jeśli RELEASE został dodany do zmiennej CONFIG.

Możesz również użyć "!debug "zamiast" release " (tzn. gdy debug nie jest w Konfiguracji)

Więcej informacji na temat qmake można znaleźć tutaj .

 22
Author: Nick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 10:00:47

The normal

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

Rozwiązanie psuje się, gdy użytkownicy naiwnie używają CONFIG += debug lub CONFIG += release do przełączania między kompilacjami debugowania i wydania (i tak jest; nikt nie pamięta, aby powiedzieć CONFIG -= release release_and_debug przed CONFIG += debug:).

To jest kanoniczny sposób na scope na debug:

CONFIG( debug, debug|release ) {
    # debug
    QMAKE_LIBDIR += "path/to/debug/lib"
} else {
    # release
    QMAKE_LIBDIR += "path/to/release/lib"
}
[[11]}por. dokumenty qmake.

EDIT 2013-11-17 : nie używaj -Lfoo w LIBS. Kanonicznym sposobem jest dodanie ścieżek (bez -L) do QMAKE_LIBDIR.

 42
Author: Marc Mutz - mmutz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-17 07:47:39