在文件夹中组织 Qt 项目文件,并简化包含

Organize Qt project files in folders, and simplify the includes

简介

如何在 pro 文件中告诉我的 sub-project 哪些是它的子目录,而不必在每个 #include 指令中为子目录添加前缀?

问题描述

我有一个大项目,包含多个库。另外,我正在查看一个拥有大量 类 的图书馆。我试图以一种更容易一目了然的方式组织它。

我正在使用 Qt Creator。进行我想到的逻辑分组的唯一方法是创建文件夹。

"pro" 文件看起来合乎逻辑:

SOURCES += sample.cpp \
    class1.cpp \
    class2.cpp \
    interfaces/interface1.cpp \
    interfaces/interface2.cpp

在我必须包含 headers 之一的每个文件中,我还必须添加文件夹:

#include "interfaces/interface1.cpp"

我不会再考虑这个,除了...

对于外部库或应用程序,我可以在他们的 pro 文件中添加(或包含 pri 文件)以告知当前库文件所在的位置:

INCLUDEPATH += $$PWD/../Sample
INCLUDEPATH += $$PWD/../Sample/interfaces

这创造了奇迹:从任何外部库或应用程序,我不需要在 include 指令前加上文件夹位置前缀。

#include "interface1.cpp"

我无法从当前项目中完成这项工作。我不明白为什么,我想知道如何制作它以便我不再需要在 include 指令中添加文件夹路径(同时仍保持文件的视觉逻辑组织)。

总结

对于上面的结构,添加

INCLUDEPATH += $$PWD/../Sample/interfaces

在外部项目的 po 文件中允许我包含这样的文件:

#include "interface1.cpp"

我希望能够从当前项目文件中执行相同的操作。现在,我被迫包含这样的文件:

#include "interfaces/interface1.cpp"

为子目录创建 .pri 文件。并在 .pro 文件中包含 .pri。