Qt MOC文件名冲突使用多个.pri文件

Ste*_*hen 7 qt qmake

为了保持我的Qt项目有点组织(使用Qt Creator),我有一个.pro文件和多个.pri文件.就在最近,我在我的一个.pri文件中添加了一个类,该文件的文件名与已经存在于单独的.pri文件中的类相同.

qmake生成的文件结构和makefile似乎无视随后发生的文件名冲突.生成的moc_*文件全部被抛入同一个子目录(根据发布或调试),最终会覆盖另一个.当我尝试制作项目时,我收到几个警告,如下所示:

Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`
Run Code Online (Sandbox Code Playgroud)

该项目无法链接.

这是我正在谈论的一个简单的例子.

目录结构:

+ project_dir
| + subdir1
| | - file.h
| | - file.cpp
| + subdir2
| | - file.h
| | - file.cpp
| - main.cpp
| - project.pro
| - subdir1.pri
| - subdir2.pri

project.pro的内容:

TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp
Run Code Online (Sandbox Code Playgroud)

subdir1.pri的内容:

HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
Run Code Online (Sandbox Code Playgroud)

subdir2.pri的内容:

HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉qmake生成一个系统,将moc_*文件从单独的.pri文件放入单独的子目录?

roh*_*npm 3

最好的办法是确保所有文件都有唯一的名称。除了 qmake 之外,还有其他工具,当你尝试做你正在做的事情时,它们也会崩溃;你也可能会让自己感到困惑(例如,理解它的#include "file.h"作用更困难)。