功能配置(.prf
)文件中使用以下语法吗?定义:
$$[QT_HOST_DATA/get]
我知道$$[ ... ]
将按照Qt文档中的说明访问QMake属性,但是在$$[QT_HOST_DATA/get]
中表示法的/ get部分得到了澄清?究竟是做什么的?
还在Qt .conf
文件中,include
(对于其他.conf
文件)和load()(对于.prf
文件)有什么区别?< / p>
如果include(some.conf)
仅包含some.conf
的内容,并将其从字面上粘贴到包含的.conf
文件中,那么load()
到底能做什么?
我没有找到有关.prf
文件结构的信息。
https://doc.qt.io/qt-5/qmake-advanced-usage.html说您可以创建.prf
个文件,但对这些文件的处理方式或结构如何没有提及?
感谢您提供的任何说明!
答案 0 :(得分:2)
在$$ [QT_HOST_DATA / get]中,符号的/ get部分在哪里得到澄清?究竟是做什么的?
除qmake源代码外,无处。看起来所有qmake属性最多可以具有四个特殊的“子属性”:$a = SplFixedArray::fromArray(array(1 => 1, 2 => 2, 3 => 3));
。但是,它们的用途是一个谜。执行// save in to variable, and export (both things in 1 line)
var abc = module.export = {
a: function () { }
}
function b() {
// access your module here
abc.a();
}
(在我的机器上)产生的值与普通xxx/dev xxx/src xxx/raw xxx/get
相同。
我没有找到有关.prf文件结构的信息。
基本上,.prf只是“系统包含文件”。不过有两点:
qmake -query QT_HOST_DATA/get
变量指向的已知位置。顺便说一句。 $$[QT_HOST_DATA]
是一种“保护变量”。我设法借助(另一个未公开的)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...
(默认值为btw。)导致包含CONFIG
,请注意,这是在处理整个.pro之后发生的,因此.prf文件可用于后处理用户选项。load()到底能做什么?
这只是专为.prf设计的CONFIG += qt
的版本。它所做的全部只是包含.prf文件。但是,与<SomePrefix>/share/qt5/mkspecs/features/qt.prf
不同,它可以立即执行此操作,并且与普通include()
不同,您不应指定路径和扩展名。