что делают $$PWD и . значит в .pro в qt

Я столкнулся с проблемой отсутствия библиотеки в своем приложении, оказывается, это может быть связано с моим пониманием $$PWD и . в файле .pro проекта qt.

  1. Таким образом, $$PWD и . означают директорию, содержащую файл .pro ИЛИ директорию, созданную в процессе сборки (например: ****-build-desktop-Qt.8$$PWDin_PATH__System__Debug) . Или они означают разные вещи.

  2. в некоторых объявлениях переменных, таких как OBJECTS_DIR = obj/Obj, похоже, что . означает сгенерированный каталог. Принимая во внимание, что в HEADERS += remoteclient.h ./RealPlay/realplay.h \ похоже, что . означает директорию, содержащую файл .pro.

  3. Как насчет их значений в LIBS и DESTDIR и т. д.?


person Henry    schedule 01.03.2016    source источник
comment
Соответствующий каталог в каталоге сборки — $$OUT_PWD. Вы можете отлаживать такие вещи с помощью message(“PWD=$$PWD")   -  person Frank Osterfeld    schedule 02.03.2016


Ответы (1)


$$PWD означает каталог, в котором находится текущий файл (.pro или .pri).

Это означает то же самое в LIBS. Я просто использовал это так в своем проекте:

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

. не имеет особого значения в файле .pro. Это означает то же самое, что и в оболочке Linux/Unix: текущий рабочий каталог. Если вы используете его в LIBS, скорее всего, он будет ссылаться на каталог сборки, в котором запускается команда link. . не расширяется. Если вы скажете -L., компоновщик буквально получит -L.

В случае HEADERS += remoteclient.h ./RealPlay/realplay.h \ qmake будет обрабатывать эти пути относительно $$PWD, поэтому не имеет значения, есть . или нет. В этом случае HEADERS += $$PWD/remoteclient.h $$PWD/./RealPlay/realplay.h \ будут эффективными путями поиска. В противном случае сборки из исходного кода не будут работать.

Обратите внимание, что . в середине пути ничего не делает.

person juzzlin    schedule 01.03.2016
comment
так что в случае OBJECTS_DIR = obj/Obj вы имеете в виду, что это на самом деле означает $$PWD/obj/Obj ? Но правда в том, что он находится в каталоге сборки, а именно, скажем, .../Linux32/****-build-desktop-Qt.pro8_1_in_PATH__System__Debug/obj/Obj, где файл .pro находится в .../Linux32/QtCreator/. Я все еще немного запутался здесь - person Henry; 02.03.2016
comment
Я ничего не говорил об OBJECTS_DIR. Это может быть связано с каталогом сборки :) - person juzzlin; 02.03.2016