Russian Qt Forum

Qt => Общие вопросы => Тема начата: frostyland от Ноябрь 01, 2010, 15:25



Название: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 01, 2010, 15:25
Подскажите, где можно получить побольше информации по синтаксису этих файлов.
Особенно интересует pri-файл.
Это какой-то скриптовой файлос, но зачем он отдельно, если есть pro-файл. В чем сермяжная правда? )))


-------------------------------
Изучаю файлос qtcreator.pri в исходниках qt-creator-2.0.0-src

Я предполагаю, что конструкции типа этой
Код
ActionScript
defineReplace(cleanPath) {
   win32:1 ~= s|\\\\|/|g
   contains(1, ^/.*):pfx = /
   else:pfx =
   segs = $$split(1, /)
   out =
   for(seg, segs) {
       equals(seg, ..):out = $$member(out, 0, -2)
       else:!equals(seg, .):out += $$seg
   }
   return($$join(out, /, $$pfx))
}
 
объявляют некие функции.
Также становится понятно, что эти функции выполняются типа во премя препроцессинга.
В pri-файлах так же объявляется множество новых переменных, в основном касающихся путей раскладки конечных файлов и все такое прочее.
А есть ли некая дебажная функция, которой можно воспользоваться чтобы куда-то вывести значение всех этих переменных, в исследовательских целях?


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: kuzulis от Ноябрь 01, 2010, 15:58
Цитировать
А есть ли некая дебажная функция, которой можно воспользоваться чтобы куда-то вывести значение всех этих переменных, в исследовательских целях?

message(Variable is: $$variable)


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 01, 2010, 16:32
о! Спасиб!
Получилось.
Только непонятно, почему трижды вызывается

=======================================================
Выполняется сборка проекта cscon...
Настройки не изменились, этап qmake пропускается.
Запускается "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

c:\qt\2010.05\qt\bin\qmake.exe -spec c:\Qt\2010.05\qt\mkspecs\win32-g++ -o Makefile ..\cscon\cscon.pro

mingw32-make: Leaving directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

Project MESSAGE: a: ./KARAMBA
Project MESSAGE: Adding support for ./KARAMBA
Project MESSAGE: a: ./KARAMBA
Project MESSAGE: Adding support for ./KARAMBA
Project MESSAGE: a: ./KARAMBA
Project MESSAGE: Adding support for ./KARAMBA

mingw32-make: Entering directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

mingw32-make[1]: Entering directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

mingw32-make[1]: Nothing to be done for `first'.

mingw32-make[1]: Leaving directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

mingw32-make: Leaving directory `V:/work/Qt/cuteSCADA/visual/cscon-build-desktop'

Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился нормально.
=======================================================

У меня там 3 cpp-шки, 1 убрал, стало 2 - ничего не изменилось.
Получается файл парсится трижды? Зачем?

==========================================================
==========================================================
==========================================================
Чуть позже:
Проверил на исходниках QtCreator, там умопомрачительное количество подпроектов и файлов.
И тоже вызывается трижды:

Цитировать
mingw32-make: Leaving directory `C:/Qt/qt-creator-2.0.0-src/src/libs/utils-build-desktop'
Project MESSAGE: DEFINES = UNICODE QT_LARGEFILE_SUPPORT QTCREATOR_UTILS_LIB
Project MESSAGE: DEFINES = UNICODE QT_LARGEFILE_SUPPORT QTCREATOR_UTILS_LIB
Project MESSAGE: DEFINES = UNICODE QT_LARGEFILE_SUPPORT QTCREATOR_UTILS_LIB
mingw32-make: Entering directory `C:/Qt/qt-creator-2.0.0-src/src/libs/utils-build-desktop'

В чем-то другом тут дело...


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 01, 2010, 16:35
И все ж таки, где в природе описание структуры этих файлов, их команд?


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: crossly от Ноябрь 01, 2010, 16:50
в асистенте...


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 01, 2010, 16:56
так, нашел, спасибо:
http://doc.trolltech.com/qt-maemo-4.6/qmake-function-reference.html
http://doc.trolltech.com/qt-maemo-4.6/qmake-variable-reference.html

И все-таки, как ваше мнение - зачем делить это все на 2 файла?
Вот я перенес все из pri в pro - и все скомпилилось.
В чем смысл?


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: kuzulis от Ноябрь 01, 2010, 17:02
Цитировать
В чем смысл?

В удобстве.
Например ты имеешь проект который содержит поддиректории. И если ты имеешь один *.pro файл, то тебе придется в нем перечислить все *.cpp и *.h и т.п. . Что будет неудобочитаемо.

Поэтому в этих поддиректориях (в каждой) ты создаешь *.pri в котором перечисляешь все *.cpp и *.h файлы которые лежат именно в ней.
И затем в корневом *.pro файле ты просто подключаешь/отключаешь нужные тебе *.pri файлы..
Например:
Цитировать
...
include(dir1/my1.pri)
include(dir2/my2.pri)

...

И т.п.


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 01, 2010, 17:13
У меня была такая мысль, но я думал, что что-то недопонимаю.
Дело в том, что как мне кажется, сами тролли как-то хаотично это разделение используют, одни и те же типы переменных определяя то в pri, то в pro...

Спасибо, буду разбираться дальше )))


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 02, 2010, 10:51
Еще вопросик:

INCLUDEPATH = $$PWD - понятно
INCLUDEPATH += $$PWD - тоже понятно
INCLUDEPATH *= $$PWD - результат равен операции +=. Для чего такой оператор в pro/pri ?


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: asvil от Ноябрь 02, 2010, 11:02
*=  добаляет только невключенные ранее элементы


Название: Re: Где бы взять побольше информации про синтаксис pri/pro-файлов
Отправлено: frostyland от Ноябрь 02, 2010, 11:06
*=  добаляет только невключенные ранее элементы
Ясно, спасиб )