Qtプロジェクトを(Qt Creatorを使用して)ある程度整理するために、1つの.proファイルと複数の.priファイルを用意しました。つい最近、別の.priファイルにすでに存在するクラスと同じファイル名を持つクラスを.priファイルの1つに追加しました。
qmakeによって生成されたファイル構造とmakefileは、その後のファイル名の衝突を認識していないように見えます。生成されたmoc_*ファイルはすべて同じサブディレクトリ(releaseまたはdebugのいずれか)にスローされ、一方が他方を上書きすることになります。プロジェクトを作成しようとすると、次のような警告がいくつか表示されます。
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の内容:
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
subdir2.priの内容:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
moc_ *ファイルを別々の.priファイルから別々のサブディレクトリに配置するシステムを生成するようにqmakeに指示する方法はありますか?