2016-03-01 4 views
6

Ich stieß auf eine Lib fehlende Problem in meiner App, stellt sich heraus, dass dies zu meinem Verständnis von $$PWD und . in .Pro-Datei von Qt-Projekt beziehen kann.

  1. So tun $$PWD und . beide bedeuten die dir, die die .pro-Datei enthält OR die dir, die durch den Bau Prozess erzeugt wird (wie: **** - build-desktop-Qt_4_8_1_in_PATH__System__Debug). Oder sie meinen verschiedene Dinge.

  2. in einiger Variablendeklaration wie OBJECTS_DIR = obj/Obj, sieht es so aus, dass . bedeutet die dir erzeugt. Während in HEADERS += remoteclient.h ./RealPlay/realplay.h \ sieht es so aus . bedeutet das Verzeichnis, das .pro-Datei enthält.

  3. Wie wäre es mit ihren Bedeutungen in LIBS und DESTDIR, etc.?

+0

Das entsprechende Verzeichnis im Build-Verzeichnis ist '$$ OUT_PWD'. Sie können solche Dinge mit "message" ("PWD = $$ PWD") " –

Antwort

6

$$PWD bedeutet die DIR- wo die aktuelle Datei (.pro oder .pri) ist.

Es bedeutet dasselbe in LIBS. Früher habe ich es einfach wie dies in meinem Projekt:

LIBS += -L$$PWD/deps/android -lopenal 

. keine besondere Bedeutung in der .pro-Datei hat. Es bedeutet dasselbe wie in der Linux/Unix-Shell: das aktuelle Arbeitsverzeichnis. Wenn Sie es in LIBS verwenden, wird es höchstwahrscheinlich auf das Build-Verzeichnis verweisen, in dem der Linkbefehl ausgeführt wird. . wird nicht erweitert. Wenn Sie -L. der Linker sagen buchstäblich -L.

Im Falle HEADERS += remoteclient.h ./RealPlay/realplay.h \ Qmake bekommen diese Pfade in Bezug auf $$PWD behandeln, so spielt es keine Rolle, ob es . ist oder nicht. HEADERS += $$PWD/remoteclient.h $$PWD/./RealPlay/realplay.h \ wären in diesem Fall die effektiven Suchpfade. Andernfalls würden Out-of-Source-Builds nicht funktionieren.

Beachten Sie, dass . in der Mitte eines Pfades nichts tut.

+0

debuggen, also, wenn OBJECTS_DIR = obj/Obj", meinen Sie, dass es eigentlich "$$ PWD/obj/Obj" bedeutet? Aber die Wahrheit ist, es ist im Build-Verzeichnis, - nämlich - sagen '.../Linux32/**** - Build-Desktop-Qt_4_8_1_in_PATH__System__Debug/Obj/Obj' wo die' .pro' Datei in '.../Linux32/QtCreator /' Ich bin immer noch ein wenig verwirrend hier – Henry

+0

Ich habe nichts über OBJECTS_DIR gesagt .. Es könnte relativ zu dem Build-Verzeichnis sein :) – juzzlin