2016-08-29 5 views
1

私はqtcreator 4.0.3を使用している個人のビルドディレクトリを作成するための$ BUILDDIRのVARを無視し、私はこのように、 すべてのビルドにディレクトリ構造体を作成しようとする理由:QTCreatorが

〜/ビルド/ project01 〜/ビルド/ project02 ...私はこの.PROファイルを使用しています/ projectNN

〜/ビルド:

:><------- Cutting ------------ 
# 
# BUILDDIR Where the executable file was create 
# 
BUILDDIR = $$HOME_PATH/Builds/$$APP_NAME 
# 
# All Directory of temporary files 
# 
OBJECTS_DIR = $$BUILDDIR/obj 
MOC_DIR =  $$BUILDDIR/moc 
RCC_DIR =  $$BUILDDIR/rcc 
UI_DIR =  $$BUILDDIR/ui 
DESTDIR =  $$BUILDDIR/bin 
# 
# If the dirs not exists, I'll create it 
# 

THis instructions are ignored 
Any directory was created. 
!exists($$DESTDIR) { 
    message("Creating $$DESTDIR struct") 
    mkpath($$DESTDIR) 
} 
!exists($$OBJECTS_DIR) { 
    message("Creating $$OBJECTS_DIR") 
    mkpath($$OBJECTS_DIR) 
} 
!exists($$MOC_DIR) { 
    message("Creating $$MOC_DIR") 
    mkpath($$MOC_DIR) 
} 
!exists($$RCC_DIR) { 
    message("Creating $$RCC_DIR") 
    mkpath($$RCC_DIR) 
} 
!exists($$UI_DIR) { 
    message("Creating $$UI_DIR") 
    mkpath($$UI_DIR) 
} 
:><------- Cutting ------------ 

しかし、これは動作しません。常にqtcreatorは、ツール - >オプション - >ビルドと実行 - >デフォルトビルドディレクトリでデフォルトディレクトリ構造 を使用します。

シンプルにこの手順を無視しています... 私は何か間違っていますか?

+0

ああ、さらに別の[XY問題](http://meta.stackexchange.com/q/66377/232821)。なぜあなたはこれが必要だと思いますか?ビルドディレクトリの内容を気にするのはなぜですか?ほとんどの場合、サブプロジェクトによって構築されたライブラリやその他のターゲットを参照しようとしている可能性があります。あなたのプロジェクトがどのように構造化されているのか、依存関係は何か、解決しようとしている最も重要な問題は何かを説明してください。 [クロスプラットフォームdll +実行可能なqmakeプロジェクトの完全なデモンストレーションについては、「この回答」(http://stackoverflow.com/a/39150917/1329652)を参照してください。 –

答えて

0

qmakeのプロジェクトを使用して、誰も彼らがそのように動作するように期待していないので、これはアンチパターンであり、それは一般的に動作しません:QtのCreatorはない、他の人にはない、など

のために任意のプロジェクトでは、ビルドディレクトリでqmakeを実行してビルドディレクトリを設定します。例えば、あなたが構築したい~/src/myproject/myproject.proを持っているはず:

mkdir -p ~/build/myproject 
cd ~/build/myproject 
qmake ~/src/myproject 
gmake -j8 

サブフォルダに複数のプロジェクトをビルドするには、それらを参照するトップレベルsubdirsプロジェクトを持っている必要があります。例えば。

+--- myproject 
    +--- myproject.pro 
    +--- lib1 
    | +--- lib1.pro 
    | ... 
    +--- lib2 
    | +--- lib2.pro 
    | ... 
    +--- app1 
    . +--- app1.pro 
    . ... 
    etc. 

ソースディレクトリ構造は、ビルドフォルダに複製されます。サブプロジェクトによって構築されたターゲットを参照する場合を除いて、ビルドフォルダ内のどこに移動するかは、一般的には気にしないでください。 app1lib2に依存する場合は、ビルド製品を依存関係として追加する必要があります。 This answerはそれを行う方法を正確に示しています。