在一个典型的C++应用程序(没有Qt(中,我可能有以下内容:
app/include/namespace1/Foo.h
app/src/namespace1/Foo.cpp
app/include/namespace2/Foo.h
app/src/namespace2/Foo.cpp
其中"应用程序";是项目的根文件夹。这些文件中的类是:
//In app/include/namespace1/Foo.h
namespace namespace1 {
class Foo;
}
//In app/include/namespace2/Foo.h
namespace namespace2 {
class Foo;
}
在像eclipse这样的构建系统中,每个.cpp文件的对象文件都将构建到不同的子目录中。
在Qt中,我在每个文件夹中创建了一个.pri文件,其中包含include
、SOURCES
和HEADERS
语句。但是,当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在构建目录中生成一个目录结构;反射镜";源目录。