在不同目录中构建具有相同文件名的Qt项目

Build Qt project with same filenames in different directories

在典型的 C++ 应用程序(无 Qt)中,我可能有以下内容:

app/include/namespace1/Foo.h

app/src/namespace1/Foo.cpp

app/include/namespace2/Foo.h

app/src/namespace2/Foo.cpp

其中“app”是项目的根文件夹。这些文件中的 类 是:

//In app/include/namespace1/Foo.h
namespace namespace1 {
    class Foo;
}

//In app/include/namespace2/Foo.h
namespace namespace2 {
    class Foo;
}

在像 eclipse 这样的构建系统中,每个 .cpp 文件的目标文件将被构建到不同的子目录中。

在 Qt 中,我在每个文件夹中创建了一个 .pri 文件,其中包含 includeSOURCESHEADERS 语句。但是,当 Qt 构建程序时,它会将所有目标文件放在同一目录中。因此,[build output]/Foo.o 生成两次并因此被覆盖,导致链接器失败。

我考虑过使用自己的 .pro 文件将每个嵌套文件夹放入自己的 SUBDIRS 项目中,但这不能正常工作,因为每个文件夹不是一个独立的项目,只是一个独立的命名空间。

像这样设置项目的正确方法是什么?

这是一个答案:https://riptutorial.com/qt/example/15975/preserving-source-directory-structure-in-a-build--undocumented---object-parallel-to-source--option--

这会导致 Qt 在“镜像”源目录的构建目录中生成一个目录结构。