2016-03-01 2946 views
6

我在應用程序中遇到了一個lib丟失的問題,事實證明這可能與我對qt項目的.pro文件中的$$PWD.的理解有關。

  1. 所以做$$PWD.都意味着的目錄,其中包含.pro文件的目錄,這是由建設過程中產生的(如:**** - 集結桌面Qt_4_8_1_in_PATH__System__Debug)。或者,他們意味着不同的事情。

  2. 在像OBJECTS_DIR = obj/Obj一些變量聲明

    ,這看起來.意味着產生DIR。而在HEADERS += remoteclient.h ./RealPlay/realplay.h \中,看起來像.意味着包含.pro文件的目錄。

  3. 他們在LIBS和DESTDIR等中的含義如何?

+0

構建目錄中的相應目錄爲'$$ OUT_PWD'。你可以用'message(「PWD = $$ PWD」)' –

回答

6

$$PWD指dir其中當前文件(.PRO或.pri)是。

這意味着在LIBS相同。我只是用它像這樣在我的項目:

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

.沒有在.pro文件中的任何特殊含義。它與Linux/Unix shell中的意思相同:當前的工作目錄。如果您在LIBS中使用它,它很可能會引用正在運行鏈接命令的構建目錄。 .未擴展。如果你說-L.連接器會從字面上得到-L.

HEADERS += remoteclient.h ./RealPlay/realplay.h \ QMAKE的情況下,將把相對$$PWD這些路徑所以如果有.與否並不重要。 HEADERS += $$PWD/remoteclient.h $$PWD/./RealPlay/realplay.h \在這種情況下將是有效的搜索路徑。否則,源代碼構建不起作用。請注意,.在路徑中間不起作用。

+0

來調試這樣的事情,以防萬一'OBJECTS_DIR = obj/Obj',你的意思是它實際上意味着'$$ PWD/obj/Obj'?但事實是在構建目錄中,也就是說'.../Linux32/**** - build-desktop-Qt_4_8_1_in_PATH__System__Debug/obj/Obj',其中'.pro'文件位於'.../Linux32/QtCreator /我在這裏還是有點困惑 – Henry

+0

我沒有說OBJECTS_DIR,它可能是相對於build dir :) – juzzlin