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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 22.4.2009, 8:15
Сообщение #2


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

Группа: Участник
Сообщений: 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 Текстовая версия Сейчас: 29.3.2024, 13:18