为了保持我的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文件放入单独的子目录?
最好的办法是确保所有文件都有唯一的名称。除了 qmake 之外,还有其他工具,当你尝试做你正在做的事情时,它们也会崩溃;你也可能会让自己感到困惑(例如,理解它的#include "file.h"作用更困难)。