2016-03-01 12 views
6

Mi sono imbattuto in un problema di lib mancante nella mia app, si scopre che questo potrebbe riguardare la mia comprensione di $$PWD e . nel file .pro del progetto qt.

  1. così fanno $$PWD e . significano entrambi dir, che contiene il file .pro O dir, che è generato da processo di costruzione (come: **** - costruire-desktop-Qt_4_8_1_in_PATH__System__Debug). Oppure, significano cose diverse.

  2. in qualche dichiarazione di variabili come OBJECTS_DIR = obj/Obj, sembra che che . significa che il generato dir. Considerando che, in HEADERS += remoteclient.h ./RealPlay/realplay.h \, sembra che . significa la directory che contiene il file .pro.

  3. E i loro significati in LIBS e DESTDIR, ecc.?

+0

La directory corrispondente nella directory di build è '$$ OUT_PWD'. Puoi eseguire il debug di queste cose con 'message (" PWD = $$ PWD ")' –

risposta

6

$$PWD significa che il dir in cui il file corrente (.pro o .pri) è.

Significa lo stesso in LIBS. Ho appena usato come questo nel mio progetto:

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

. non ha alcun significato speciale nel file .pro. Significa la stessa cosa della shell Linux/Unix: la directory di lavoro corrente. Se lo si utilizza in LIBS, molto probabilmente farà riferimento alla directory di compilazione in cui viene eseguito il comando di collegamento. . non è stato espanso. Se dici -L. il linker letteralmente ottenere -L.

Nel caso di HEADERS += remoteclient.h ./RealPlay/realplay.h \ qmake tratterà questi percorsi relativi al $$PWD quindi non importa se c'è . o no. HEADERS += $$PWD/remoteclient.h $$PWD/./RealPlay/realplay.h \ sarebbero i percorsi di ricerca effettivi in ​​questo caso. In caso contrario, le build non basate all'origine non funzionerebbero.

Si noti che . nel mezzo di un percorso non fa nulla.

+0

quindi nel caso 'OBJECTS_DIR = obj/Obj', vuoi dire che in realtà significa' $$ PWD/obj/Obj'? Ma la verità è che è nella dir di compilazione, vale a dire '.../Linux32/**** - build-desktop-Qt_4_8_1_in_PATH__System__Debug/obj/Obj' dove il file '.pro' trova in' .../Linux32/QtCreator/' Sono ancora un po 'di confusione qui – Henry

+0

Non ho detto nulla su OBJECTS_DIR. Potrebbe essere relativo alla compilazione :) – juzzlin