Qt: *.pro与*.pri的区别

105

对于qmake而言,*.pro*.pri配置文件之间有什么区别?

应该将什么内容放入*.pro文件以及*.pri文件中呢?

3个回答

93

它们之间的目标重用有一个主要区别:

.pro

这通常被称为项目文件

.pri

这通常被称为项目包含文件

从它们的名称中可以看出,主要区别在于.pri文件是用于包含的文件。这类似于在编程语言中包含模块以共享功能。

您将能够将公共设置和代码编写到这些.pri文件中,并根据需要从多个.pro文件中包含它们。以下是实际使用它的方法:

foo.pri

FOO = BAR

hello.pro

...
include($$PWD/foo.pri)
...

world.pro

...
include($$PWD/foo.pri)
...

这样,共同点将在hello.proworld.pro中都可用。在这种情况下并没有太大区别,但当共享功能变得更长时,它将为您节省一些编写、同步修复等工作。

如果您希望,甚至可以在另一个.pri文件中包含一个.pri文件。还可以在不同子项目中包含.pri文件,等等。非常好。

然而,对于.pro.pri文件,语法是相同的。最后,您将在.pro文件上运行qmake,如果您没有现有的项目文件并且打算使用qmake -project,那么qmake也会为您生成它。

您可以在这里了解更多关于include函数的信息:

include(filename)

将指定文件名的内容包含到当前项目的被包含点。 如果包含filename则此函数成功;否则失败。包含的文件将立即处理。

可以通过将此函数用作范围的条件来检查是否已包含文件。

完整起见,还有.prf 项目特征文件.prl 项目链接器文件,但作为终端用户,您暂时不需要处理它们。


56
一个.pro文件是您可以在其上运行QMake的文件,而.pri文件则由.pro文件包含。除此之外,这两者没有太大的区别。
例如,如果您有不同的构建需要不同的选项,则可以将共享信息放在 .pro 文件中,同时将选项推迟到各种 .pri 文件中。更多信息,尽管不多,可以在此处找到

16
.pri 文件的格式与 .pro 文件的格式完全相同。主要区别在于意图不同;.pro 文件是大多数人希望直接运行 qmake 的文件,而 .pri 文件是要被 .pro 文件包含的文件。当您指示 qmake 包含另一个文件时,它只会像在当前文件中一样处理该文件中的命令。
参考链接:*.pro vs *.pri

我看到了这个问题,但没有注意到第二个答案实际上回答了我的问题..:( - Roman Byshko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接