2011-12-27 5 views
4

私のQtプロジェクトのqmakeファイルを変更して、2つのバージョンのプログラムをビルドするようにしたいのですが、1つはSOME_FLAGです。そうではありません。私のコードは、#ifdef SOME_FLAGの結果によって異なる動作をします。'#IFDEFマクロ'で使用するためにqmakeファイルを複数のターゲットにビルドする

これは可能ですか?

+0

あなたはどのプラットフォームを使用しており、定義を設定する基準は何ですか? @パオロは答えを持って、残っている唯一の問題は、あなたが使いたい条件は何ですか?多くのアプローチがあります。 – casualcoder

+0

私はLinux環境です。同じプラットフォーム用に2つのバイナリを構築していますが、コードに若干の違いがあります。私は、デフォルトの 'qmake'コマンドをパラメータなしで実行することによって、両方のターゲットを構築できるようにしたいと思います。 – Pieter

+0

環境変数を使用して、必要なオプションを選択することができます。プロジェクトファイルは、それに基づいて使用する定義を選択できます。それはあなたのために働くのですか? – casualcoder

答えて

1

私の知る限り、qmakeは1つのターゲットを許可しますが、1つの例外があります。つまり、デバッグバージョンとリリースバージョンをビルドしたい場合は、両方を同じプロジェクトファイルでビルドすることができます。このように、ビルドごとにDEFINESを個別に指定することもできます。事実の後でstripコマンドを使用してデバッグを削除することができますが、これはあなたの状況に使用できるかもしれません。 Qt4のHTML文書(システムにインストールされているかどうかを確認する)は、qmake-common-projects.htmlのdebug_and_releaseモードについて説明しています。

今は、複数のプロジェクトファイルが許可されています。プロジェクトごとに目的のDEFINESを使用して、実行可能ファイルごとに1つのプロジェクトを作成します。 qmake -oフラグを使用して、ターゲットごとに個別のMakefileを発行し、それらをバインドする1つのMakefileを発行します。私はそれを使用しないので、QtCreatorであなたを助けることはできませんが、これはコマンドラインで動作します。このスキームを示すサンプルのMakefileは次のようになります:

all: Makefile_A Makefile_B 
     $(MAKE) -f Makefile_A 
     $(MAKE) -f Makefile_B 

Makefile_A: withSomeFlag.pro 
     qmake -o [email protected] $< 

Makefile_B: withoutSomeFlag.pro 
     qmake -o [email protected] $< 

これは仕事をしていませんちょうど速いファイルで、Makeファイルのよりよい誰かはそれがより一般的になるかもしれません。 注: Makefileの字下げは、単一のTAB文字で、8スペースではありません。

デフォルトでは、実行可能ファイル名はプロジェクトファイルのベースネームと同じです。これがあなたをある程度のキャパシティに導くことを願っています。

1

あなたはおそらく、条件の中、あなたの.proファイルに

DEFINES += "SOME_FLAG" 

を追加することができます。