2016-03-01 2945 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