Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: qmake, как обратится к текущему каталогу?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
void*
Обнаружил еще одну очень интересную возможность qmake. То что можно использовать .pri-файлы для того, чтобы выделить весь список исходников в отдельный файл, я думаю ни для кого не является секретом. Однако когда в проекте несколько папок с исходниками, то можно для каждой папки написать .pri-файл подобного содержания:
somefile.pri:
# includes from this folder
SOURCES += $$PWD/somefile1.cpp $$PWD/somefile2.cpp
HEADERS += $$PWD/somefile1.h $$PWD/somefile2.h

а затем в .pro-файле просто пишем:
...
include(somedir/somefile.pri)
...

Тем самым во-первых не нужно писать полные пути к файлам, а во-вторых для каждой папки можно иметь отдельный файл со списком исходников, и при этом не нужно при добавлении нового файла лазить в .pro-файл, т.е. можно работать не покидая данную папку. Насколько я понял, $$PWD будет означать полный путь к текущей папке в которой содержится данный файл, хотя более-менее внятной документации по этому поводу я не нашел. Сам прием подсмотрел в структуре самой библиотеки Qt.
Litkevich Yuriy
Цитата(void* @ 19.1.2009, 0:24) *
Насколько я понял, $$PWD будет означать полный путь к текущей папке в которой содержится данный файл, хотя более-менее внятной документации по этому поводу я не нашел.
с документирование qmake вообще дела плохо обстоят.

Цитата
Чтобы получить содержимое окружающего значения, когда qmake запускается, используйте оператор $$(...)

 DESTDIR = $$(PWD)
message(The project will be installed in $$DESTDIR)

Цитата
В приведенном выше присваивании, значение переменной окружения PWD читается, когда обрабатывается файл проекта.
Чтобы получить содержимое окружающего значения во время, когда обрабатывается созданный Makefile, используйте оператор $(...):

 DESTDIR = $(PWD)
message(The project will be installed in the value of PWD)
message(when the Makefile is processed.)


и в %QTDIR%\qmake\project.cpp:
    } else if(var == QLatin1String("OUT_PWD")) { //the out going dir
        var = ".BUILTIN." + var;
        place[var] =  QStringList(Option::output_dir);
    } else if(var == QLatin1String("PWD") ||  //current working dir (of _FILE_)
              var == QLatin1String("IN_PWD")) {
void*
я это все естественно видел, кроме последнего, кстати оно и больше всего объясняет значение этой переменной, выходит я был полностью прав :)
void*
а еще мне вот интересно - есть ли какая-нибудь разница между двумя записями - $$PWD и $$(PWD) ?
Litkevich Yuriy
Цитата(void* @ 19.1.2009, 6:07) *
есть ли какая-нибудь разница между двумя записями - $$PWD и $$(PWD) ?
ответы тут
SABROG
Я точно не уверен в алгоритме заполнения переменной PWD qmake'ом, но эта переменная есть в winxp и выше. В win2k её нету. Но зато есть вариант, который есть и там и там - %CD%. Это скрытая переменная, которые не видна, если вызывать set в консоли. Хотя я смотрю qmake своими средствами это делает:

QString qmake_getpwd()
{
    if(pwd.isNull())
        pwd = QDir::currentPath();
    return pwd;
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.