为了让我的 Qt 项目有条理(使用 Qt Creator),我有一个 .pro 文件和多个 .pri 文件。就在最近,我在我的一个 .pri 文件中添加了一个类,该文件与一个单独的 .pri 文件中已经存在的类具有相同的文件名。
qmake 生成的文件结构和 makefile 似乎没有注意到随之而来的文件名冲突。生成的 moc_* 文件都被扔到同一个子目录中(取决于发布或调试),一个最终覆盖另一个。当我尝试制作该项目时,我收到几个如下所示的警告:
Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`
并且项目无法链接。
这是我正在谈论的一个简单示例。
目录结构:
+ 项目目录 | + 子目录1 | | - 文件.h | | - 文件.cpp | + 子目录2 | | - 文件.h | | - 文件.cpp | - main.cpp | - 项目.pro | - subdir1.pri | - subdir2.pri
project.pro的内容:
TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp
subdir1.pri 的内容:
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
subdir2.pri 的内容:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
有没有办法告诉 qmake 生成一个系统,将 moc_* 文件从单独的 .pri 文件放入单独的子目录中?