保留构建中的源目录结构(与源选项并行的未记录的对象)

如果你希望通过将源文件保存在不同的子目录中来组织项目,你应该知道在构建期间, qmake 不会保留此目录结构,并且它会将所有“.o”文件保留在单个构建目录中。如果你在不同的目录中存在冲突的文件名,如下所示,则可能会出现问题。

src/file1.cpp
src/plugin/file1.cpp

现在 qmake 将决定在构建目录中创建两个“file1.o”文件,导致其中一个文件被另一个文件覆盖。buld 会失败。为防止这种情况,你可以将 CONFIG += object_parallel_to_source 配置选项添加到 pro 文件中。这将告诉 qmake 生成保存源目录结构的构建文件。这样,你的构建目录将反映源目录结构,并且将在单独的子目录中创建目标文件。

src/file1.o
src/plugin/file1.o

完整的例子。

QT += core
TARGET = myapp
TEMPLATE = app

CONFIG += object_parallel_to_source

SOURCES += src/file1.cpp \
           src/plugin/file1.cpp

HEADERS  += src/plugin/file1.h

请注意,object_parallel_to_source CONFIG 选项未正式记录