crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> qmake, как обратится к текущему каталогу?, в файлах pro и pri
void*
  опции профиля:
сообщение 18.1.2009, 21:24
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Обнаружил еще одну очень интересную возможность 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 - 31.1.2009, 12:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.1.2009, 22:23
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(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*
  опции профиля:
сообщение 18.1.2009, 23:11
Сообщение #3


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


я это все естественно видел, кроме последнего, кстати оно и больше всего объясняет значение этой переменной, выходит я был полностью прав :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 19.1.2009, 2:07
Сообщение #4


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


а еще мне вот интересно - есть ли какая-нибудь разница между двумя записями - $$PWD и $$(PWD) ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.4.2009, 23:36
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(void* @ 19.1.2009, 6:07) *
есть ли какая-нибудь разница между двумя записями - $$PWD и $$(PWD) ?
ответы тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 22.4.2009, 8:15
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Я точно не уверен в алгоритме заполнения переменной PWD qmake'ом, но эта переменная есть в winxp и выше. В win2k её нету. Но зато есть вариант, который есть и там и там - %CD%. Это скрытая переменная, которые не видна, если вызывать set в консоли. Хотя я смотрю qmake своими средствами это делает:

QString qmake_getpwd()
{
    if(pwd.isNull())
        pwd = QDir::currentPath();
    return pwd;
}


Сообщение отредактировал SABROG - 22.4.2009, 11:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 12:30