qt-creator が定義するシャドウ ビルドとは異なりますが、以下を使用してきちんとしたビルド構造を取得しています。
複数のターゲット用に、またテスト モードでビルドしたライブラリのプロファイル ファイルからの抜粋。
TARGET = ../lib/common
message("libcommon:")
contains(CONFIG,test){
message("Building Test")
DESTDIR = test
TARGET = $$TARGET-test
}else{
message("Building Program")
DESTDIR = program
TARGET = $$TARGET
}
contains(MEEGO_EDITION,harmattan){
message("Maemo Harmattan")
DESTDIR = $$DESTDIR-maemo6
TARGET = $$TARGET-maemo6
DEFINES += MAEMO MAEMO6
}
unix:!maemo5:!contains(MEEGO_EDITION,harmattan){#desktop
message("Desktop")
DESTDIR = $$DESTDIR-desktop
TARGET = $$TARGET-desktop
}
contains(CONFIG,test){
TEMPLATE = app
SOURCES += $$files(src_test/main.cpp)
HEADERS += $$files(src_test/*.h)
INCLUDEPATH += src_test
}else{
TEMPLATE = lib
CONFIG += staticlib
}
CONFIG(debug, debug|release) {
message("Debug")
DESTDIR = $$DESTDIR-debug
CONFIG += debug
DEFINES += DEBUG
TARGET = $$TARGET-debug
}else{
message("Release")
//DEFINES += QT_NO_DEBUG_OUTPUT
DESTDIR = $$DESTDIR-release
TARGET = $$TARGET-release
}
MOC_DIR = build/$${DESTDIR}/moc
OBJECTS_DIR = build/$${DESTDIR}/obj
UI_DIR = build/$${DESTDIR}/ui
したがって、すべてのオブジェクト、moc、gui ファイルを別々のディレクトリ (例: libcommon/build/program-desktop-debug/moc) に取得し、バイナリを別の名前で同じディレクトリに取得します。1 つまたは別のビルドをトリガーするには、ビルド ターゲットで CONFIG+= を設定するだけです。そして、この構造は pro ファイルにのみ依存し、その一部を common.pri に配置して、すべてのプロジェクトで使用できます。shadow-build 構成はもう必要ありません。ちなみに、pro ファイルは libcommon/libcommon.pro にあります。