4

リリース ビルドとデバッグ ビルドのバイナリを、ソース コードとは別のフォルダーに配置したいと考えています。.pro ファイル内:

CONFIG(debug){
    DESTDIR = ./debug
    OBJECTS_DIR = debug/.obj
    MOC_DIR = debug/.moc
    RCC_DIR = debug/.rcc
    UI_DIR = debug/.ui
}

CONFIG(release){
    DESTDIR = ./release
    OBJECTS_DIR = release/.obj
    MOC_DIR = release/.moc
    RCC_DIR = release/.rcc
    UI_DIR = release/.ui
}

リリース ビルドの場合は、すべて問題ありません。プロジェクトのルートに ./release ディレクトリがあります。しかし、デバッグ ビルドの場合、qmake はデバッグ ディレクトリを作成しませんでした。その名前はrelease(再び!):

qmake CONFIG+=debug CONFIG+=local 
// generates release and put everything in that directory
// but I want debug directory !

アップデート:

デバッグとリリースの順番を入れ替えて、デバッグディレクトリを作成します。qmakeによって最後の構成のみが表示されます...

4

2 に答える 2

5

本当にソース内ビルドを実行し、別の出力ディレクトリが必要な場合は、ドキュメントごとに条件を次のように変更する必要があると思います

CONFIG(debug, debug|release){
    DESTDIR = ./debug
    OBJECTS_DIR = debug/.obj
    MOC_DIR = debug/.moc
    RCC_DIR = debug/.rcc
    UI_DIR = debug/.ui
}

CONFIG(release, debug|release){
    DESTDIR = ./release
    OBJECTS_DIR = release/.obj
    MOC_DIR = release/.moc
    RCC_DIR = release/.rcc
    UI_DIR = release/.ui
}

理由は聞かないでください。IMHO QMakeは、絶対に避けるべき忌まわしいものです...

于 2013-03-19T13:16:29.870 に答える
3

本当の解決策は、アウトオブソース ビルドを行うことです。そうすれば、デバッグからリリース ビルドに切り替えるたびに再構成する必要がなくなります。これを行うには、次を使用します。

mkdir build-dbg
cd build-dbg
qmake ../foo.pro CONFIG+=debug
cd ..
mkdir build-rel
cd build-rel
qmake ../foo.pro CONFIG+=release

追加のプラスとして、ビルドの破片でソース ツリーを汚染しません。

于 2013-03-19T12:33:15.850 に答える