.pri 文件是“Project Include”的缩写。本质上是一个包含Qt项目配置信息的文本文件。.pro文件不同的是,.pri文件通常用于封装可重用的配置片段,而不是定义完整的项目。这样,我们就可以在多个.pro文件中包含相同的.pri文件,以实现配置的重用。

基本用法

在 Qt 项目中,.pri 文件可以通过 .pro 文件(Qt 项目文件)中的 include() 函数来引入。

include($$PWD/config.pri)

 

.pri 文件内容

.pri 文件的内容非常灵活,可以包含几乎所有在 .pro 文件中可以使用的指令。

例如:分别使用了FORMS、HEADERS、SOURCES、DEFINES、CONFIG等指令。

  1. FORMS +=
  2. $$PWD/frmaccoutinfo.ui
  3. $$PWD/frmadvancedsetting.ui
  4. HEADERS +=
  5. $$PWD/frmaccoutinfo.h
  6. $$PWD/frmadvancedsetting.h
  7. SOURCES +=
  8. $$PWD/frmaccoutinfo.cpp
  9. $$PWD/frmadvancedsetting.cpp
  10. DEFINES += SEVEN_INCH_SEAT
  11. CONFIG += config_seven

.pri文件的作用

1. 配置共享:如果你有多个Qt项目需要共享相同的编译设置、库依赖或源代码目录,你可以将这些配置放在.pri文件中,并在每个项目的.pro文件中包含它。这样,当你需要更新这些共享配置时,只需修改.pri文件即可,而无需逐个更新每个项目的.pro文件。

例如:工程项目Radio细分为 components、pinyin、JPKeyboard、JpLoginMng、UI_QWIDGET等子项目。想要在全局(项目和子项目)生效一个配置:

其余子项目以此类推,结果: 

 

2. 模块化.pri文件允许你将复杂的项目配置分解为更小的、更易于管理的模块。每个.pri文件可以专注于一组特定的配置(如网络库依赖、UI组件等),这使得项目结构更加清晰和模块化。

例如:一个大型界面工程中,按照界面进行分解,将每个界面分解为一个子模块。

 

3. 条件编译.pri文件也支持条件编译指令,这允许你根据不同的条件(如操作系统、编译器类型等)包含不同的配置。这对于跨平台开发尤其有用,因为它允许你为不同的目标平台定制编译设置。 

  1. include(../config.pri)
  2. #if CONFIG contains config_seven
  3. contains(CONFIG, config_seven){
  4. SOURCES +=
  5. src/DataBase/clientdefine_7inch.cpp
  6. Qt pri文件详解
    src/CallSession_7inch.cpp
  7. src/DataBase/DataJsonManager_7inch.cpp
  8. src/DataBase/datamanager_7inch.cpp
  9. HEADERS +=
  10. inc/DataBase/clientdefine_7inch.h
  11. inc/DataBase/datamanager_7inch.h
  12. inc/DataBase/radiodb_7inch.h
  13. inc/Utils/commFunc_7inch.h
  14. }
  15. #if CONFIG contains config_twelve
  16. contains(CONFIG, config_twelve){
  17. SOURCES +=
  18. src/DataBase/clientdefine_12inch.cpp
  19. src/CallSession_12inch.cpp
  20. src/DataBase/DataJsonManager_12inch.cpp
  21. src/DataBase/datamanager_12inch.cpp
  22. HEADERS +=
  23. inc/DataBase/clientdefine_12inch.h
  24. inc/DataBase/datamanager_12inch.h
  25. inc/DataBase/radiodb_12inch.h
  26. inc/Utils/commFunc_12inch.h
  27. }