在不同目录中构建具有相同文件名的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 文件,其中包含 include
、SOURCES
和 HEADERS
语句。但是,当 Qt 构建程序时,它会将所有目标文件放在同一目录中。因此,[build output]/Foo.o 生成两次并因此被覆盖,导致链接器失败。
我考虑过使用自己的 .pro 文件将每个嵌套文件夹放入自己的 SUBDIRS
项目中,但这不能正常工作,因为每个文件夹不是一个独立的项目,只是一个独立的命名空间。
像这样设置项目的正确方法是什么?
这会导致 Qt 在“镜像”源目录的构建目录中生成一个目录结构。
在典型的 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 文件,其中包含 include
、SOURCES
和 HEADERS
语句。但是,当 Qt 构建程序时,它会将所有目标文件放在同一目录中。因此,[build output]/Foo.o 生成两次并因此被覆盖,导致链接器失败。
我考虑过使用自己的 .pro 文件将每个嵌套文件夹放入自己的 SUBDIRS
项目中,但这不能正常工作,因为每个文件夹不是一个独立的项目,只是一个独立的命名空间。
像这样设置项目的正确方法是什么?
这会导致 Qt 在“镜像”源目录的构建目录中生成一个目录结构。