(申し訳ありませんが、次の詳細を含める以外に説明するより良い方法は考えられません)
構築前の構造:
F:\
└ Project\
└ Project.pro
└ ProjectSettings.pri
└ Source\
└ Source.pro
└ My_Library\
└ My_Library.pro
└ library.cpp
└ ...
「Project.pro」の内容:
TEMPLATE = subdirs
SUBDIRS = Source
「Source.pro」の内容:
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += My_Library
「My_Library.pro」の内容:
include(../../ProjectSettings.pri)
TEMPLATE = lib
SOURCES += library.cpp
「ProjectSettings.pri」の内容
TARGET = $$basename(_PRO_FILE_PWD_)
Debug:buildDir = "Debug"
Release:buildDir = "Release"
DESTDIR = $$PWD/$$buildDir/bin
OBJECTS_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/obj
MOC_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/moc
RCC_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/rcc
UI_DIR = $$PWD/$$buildDir/$$basename(_PRO_FILE_PWD_)/gui
ビルド後の構造:
F:\
└ Project\
└ Project.pro
└ ProjectSettings.pri
└ Source\
└ Source.pro
└ My_Library\
└ My_Library.pro
└ library.cpp
└ Debug\
└ bin\
└ libMy_Library.a
└ My_Library\
└ moc\
└ obj\
└ library.o
└ My_Library\ <------ WTF
└ moc\
└ Release\
└ bin\
└ libMy_Library.a
└ My_Library\
└ moc\
└ obj\
└ library.o
問題
アイデアは
qmake -recursive
プロジェクトフォルダで実行- 指定されたすべてのサブプロジェクトをビルドします
- よく整理された中間ファイルの束を吐き出します
- サブプロジェクトのすべてのバイナリを 1 つのフォルダーに配置します。
- これらはすべて、デバッグまたはリリースのスコープに基づいて分離されています
上で「WTF」 *を強調表示したmocフォルダーを含むプロジェクトフォルダーの「サブプロジェクト」ごとの追加フォルダーを除いて、見事に機能するようです。
質問
- .pro ファイル内のどの命令 (の組み合わせ) が "WTF" フォルダを生成しますか?
- 「WTF」フォルダは何に使用されますか? (Debug および Release スコープは独自の moc を指定することに注意してください)
- 「WTF」フォルダが作成されないようにする方法はありますか?
MOCにmocファイルを出力させるソースファイルはまだないので、現時点ではすべてのmocフォルダーが空です。
* "WTF" = "何のフォルダ"