Russian Qt Forum
Октябрь 02, 2024, 09:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Где бы взять побольше информации про синтаксис pri/pro-файлов  (Прочитано 9637 раз)
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-файлах так же объявляется множество новых переменных, в основном касающихся путей раскладки конечных файлов и все такое прочее.
А есть ли некая дебажная функция, которой можно воспользоваться чтобы куда-то вывести значение всех этих переменных, в исследовательских целях?
« Последнее редактирование: Ноябрь 01, 2010, 15:38 от frostyland » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Ноябрь 01, 2010, 15:58 »

Цитировать
А есть ли некая дебажная функция, которой можно воспользоваться чтобы куда-то вывести значение всех этих переменных, в исследовательских целях?

message(Variable is: $$variable)
Записан

ArchLinux x86_64 / Win10 64 bit
frostyland
Гость
« Ответ #2 : Ноябрь 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'

В чем-то другом тут дело...
« Последнее редактирование: Ноябрь 01, 2010, 16:40 от frostyland » Записан
frostyland
Гость
« Ответ #3 : Ноябрь 01, 2010, 16:35 »

И все ж таки, где в природе описание структуры этих файлов, их команд?
Записан
crossly
Гость
« Ответ #4 : Ноябрь 01, 2010, 16:50 »

в асистенте...
Записан
frostyland
Гость
« Ответ #5 : Ноябрь 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 - и все скомпилилось.
В чем смысл?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Ноябрь 01, 2010, 17:02 »

Цитировать
В чем смысл?

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

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

...

И т.п.
« Последнее редактирование: Ноябрь 01, 2010, 17:06 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
frostyland
Гость
« Ответ #7 : Ноябрь 01, 2010, 17:13 »

У меня была такая мысль, но я думал, что что-то недопонимаю.
Дело в том, что как мне кажется, сами тролли как-то хаотично это разделение используют, одни и те же типы переменных определяя то в pri, то в pro...

Спасибо, буду разбираться дальше )))
Записан
frostyland
Гость
« Ответ #8 : Ноябрь 02, 2010, 10:51 »

Еще вопросик:

INCLUDEPATH = $$PWD - понятно
INCLUDEPATH += $$PWD - тоже понятно
INCLUDEPATH *= $$PWD - результат равен операции +=. Для чего такой оператор в pro/pri ?
Записан
asvil
Гость
« Ответ #9 : Ноябрь 02, 2010, 11:02 »

*=  добаляет только невключенные ранее элементы
Записан
frostyland
Гость
« Ответ #10 : Ноябрь 02, 2010, 11:06 »

*=  добаляет только невключенные ранее элементы
Ясно, спасиб )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.161 секунд. Запросов: 22.