爲了保持我的Qt項目有點組織(使用Qt Creator),我有一個.pro文件和多個.pri文件。就在最近,我添加了一個類到我的一個.pri文件,它具有與已存在於單獨的.pri文件中的類相同的文件名。Qt使用多個.pri文件的MOC文件名衝突
由qmake生成的文件結構和makefiles似乎忽略了隨之而來的文件名衝突。生成的moc_ *文件全部被扔到相同的子目錄(釋放或調試,取決於),最後一個覆蓋另一個。當我嘗試製作該項目時,我收到幾條警告,如下所示:
Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`
並且該項目無法鏈接。
這是我正在談論的一個簡單例子。
目錄結構:
+ 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
subdir1.pri的內容:subdir2.pri的
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
內容:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
有沒有辦法告訴qmake生成一個系統,將moc_ *文件從單獨的.pri文件放入單獨的子目錄中?
我不一定與混亂的說法一致是我包括陳述通常會採用以下形式: 的#include「subdir1/file.h」 Nontheless,你似乎是正確的。獨特的文件名似乎是唯一的途徑。 – Stephen 2010-06-03 15:58:21
我相信moc文件和目標文件現在不會相互衝突,如果你已經跟着我的..相對於你的評論雖然:)糾正我,如果我的錯誤.. – liaK 2010-06-03 16:07:03