Что $$ [QT_HOST_DATA / get] делает в файле конфигурации Qt Feature (.prf)? - PullRequest
0 голосов
/ 11 февраля 2019

Где следующий синтаксис используется в файле конфигурации функции (.prf)?определено:

$$[QT_HOST_DATA/get]

Я знаю, $$[ ... ] предназначен для доступа к свойствам QMake, как описано в документе Qt, но где разъясняется часть / get в нотации $$[QT_HOST_DATA/get]?И что именно он делает?

Также, внутри файла Qt .conf, в чем разница между include (для других файлов .conf) и load () (для файлов .prf)?

Если include(some.conf) просто состоит из содержимого some.conf, которое буквально вставляется во включающий файл .conf, что точно делает load()?

Я не нашел никакогоинформация о структуре .prf файлов.https://doc.qt.io/qt-5/qmake-advanced-usage.html говорит, что вы можете создавать .prf файлов, но ничего не говорит о том, как эти файлы обрабатываются или должны быть структурированы?

Спасибо за любые разъяснения, которые вы можете предоставить!

1 Ответ

0 голосов
/ 11 февраля 2019

где разъясняется часть / get части нотации в $$ [QT_HOST_DATA / get]?И что это точно делает?

Нигде, кроме исходного кода qmake.Похоже, что все свойства qmake могут иметь до четырех специальных «подпроцессов»: xxx/dev xxx/src xxx/raw xxx/get.Однако, для чего они используются - загадка.Выполнение qmake -query QT_HOST_DATA/get дает (на моей машине) то же значение, что и обычное $$[QT_HOST_DATA].

Я не нашел никакой информации о структуре файлов .prf.

По сути, .prf - это просто «системный файл включения».Однако есть две точки:

  1. Все файлы .prf находятся в известном месте (ах), указанном переменной QMAKEFEATURES.

Кстати.QMAKEFEATURES является своего рода «защищенной переменной».Мне удалось изменить его только с помощью (еще одной недокументированной) функции cache():

QMAKEFEATURES *= mydir # '*=' because of 3 passes under Windows
# 'transient' prevents creation file on disk
# only 'super' seems to work OK; no idea what's wrong with 'stash' or 'cache'
cache(QMAKEFEATURES, set transient super) 
# now I can load .prf from <mydir> too...
Prf можно неявно загрузить, указав его в переменной CONFIG.Например, CONFIG += qt (по умолчанию, кстати) приводит к включению <SomePrefix>/share/qt5/mkspecs/features/qt.prf Обратите внимание, что это происходит после обработки всего .pro, поэтому файл .prf можно использовать для последующей обработки пользовательских параметров.

что именно делает load ()?

Это просто версия include(), разработанная специально для .prf.Все, что он делает, это просто включает .prf файл.Но, в отличие от CONFIG += xxx, он делает это немедленно, и, в отличие от простого include(), вы не должны указывать путь и расширение.

...