$$[[​​=10=]] 在 Qt 功能配置 (.prf) 文件中做什么?

What does $$[QT_HOST_DATA/get] do in a Qt Feature configuration (.prf) file?

功能配置 (.prf) 文件中的以下语法在哪里使用?定义:

$$[QT_HOST_DATA/get]

我知道 $$[ ... ] 是访问 QMake 属性,如 Qt 文档中所述,但是 $$[QT_HOST_DATA/get] 中符号的 /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 文件,但没有说明这些文件是如何处理或应该如何构建的?

感谢您提供的任何说明!

where is the /get part of the notation in $$[QT_HOST_DATA/get] clarified? And what does it precisely do?

无处可去,除了 qmake 源代码。看起来所有 qmake 属性最多可以有四个特殊的 "subproperies": xxx/dev xxx/src xxx/raw xxx/get。然而,它们的用途是一个谜。执行 qmake -query QT_HOST_DATA/get 产生(在我的机器上)与普通 $$[QT_HOST_DATA].

相同的值

I have found no info about the structure of .prf files.

基本上,.prf 就是 "system include file"。不过有两点:

  1. 所有 .prf 文件都位于 QMAKEFEATURES 变量指向的已知位置。

顺便说一句。 QMAKEFEATURES 是一种 "protected variable"。我仅在(另一个未记录的)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...
  1. Prf 可以通过在 CONFIG 变量中提及它来隐式加载。例如,CONFIG += qt(顺便说一下,这是默认值。)导致包含 <SomePrefix>/share/qt5/mkspecs/features/qt.prf 请注意,这是在处理整个 .pro 之后发生的,因此 .prf 文件可用于 post-处理用户选项。

what does load() do exactly?

就是include()专门为.prf设计的版本。它所做的只是包含 .prf 文件。但是,与 CONFIG += xxx 不同,它会立即执行此操作,并且与普通 include() 不同,您不应指定路径和扩展名。