web-dev-qa-db-ja.com

Qt Creatorに前処理定義(マクロ)を追加する方法は?

Eclipseには、Paths and SymbolsのSymbolsオプションを使用して、プロジェクトの前処理定義(#ifdefマクロ)を指定するオプションがあります。これは、クロスプラットフォームであるコードの効果的なインデックス作成に役立ちます。 Qt Creatorでこれらを提供するオプションはありますか?

32
Bharathwaaj

QT Documentation から:

定義は.configファイルで指定されます。 .configファイルは通常のC++ファイルであり、解析時にすべてのソースファイルの先頭に追加されます。以下の例のように、.configファイルのみを使用して行を追加します。

#define NAME value

つまり、MyProjectという名前のプロジェクトをインポートする場合、プリプロセッサ定義をMyProject.configで指定する必要があります

私のプロジェクトの場合、インデクサーはこの定義プロジェクト全体を認識し、これを反映するようにオートコンプリートを変更します。

17
Gus E

場合によります:-)

以下は、qmakeベースのプロジェクトを使用していることを前提としています。

最初に、DEFINES += SOME_DEFINE=valueを.proファイルに追加できます。これは、作成者の内部およびコマンドラインでビルドするときに取得され、.proファイルからMSVCまたはXCodeプロジェクトを作成するときにも表示されるはずです。

次に、プロジェクトの構成時にQt Creatorが発行するqmake呼び出しにDEFINES += SOME_DEFINE=valueを追加できます。これは、プロジェクトモード、ビルド設定、QMakeステップで発生します。

最後に、#define SOME_DEFINE value liensをヘッダーファイルに入れて含めることができます。それはすべての種類のプロジェクトで機能します:-)

37
Tobias Hunger

.proファイルで#define文字列を指定したかったのですが、コードは引用符のない文字列の内容になりました。引用符をエスケープし、エスケープをエスケープして、1組の引用符を取得して、コード全体に適用する必要がありました。これは、qmakeが1組のエスケープと一部の引用符を削除し、コマンドラインが残りのエスケープを削除するためです。これは私のために働いた:

DEFINES += "VERSION=\"\\\"0.1.0\\\"\""

Windowsでは、このVERSION文字列を.rcファイルで使用して、Windowsが必要とするバージョンのものを作成したり、「About」メニューのコードを作成したりできます。

6
Brandon

最初の答えは良いと思いますが、設定を手動で管理する必要があります。これに対してIDE releaseまたはdebug構成が選択されているかどうかに基づいて、自動的に.

このビットは冗長かもしれませんが、これはあなたのために動作することに注意してくださいIDE for building)を使用している場合のみ。そうではない場合、別のソリューションが必要になります。

手順

写真は千の言葉に値するので、Qt Creator 4.3.1を使用してデバッグビルド用のデバッグマクロを定義する方法の例を次に示します。

  1. Debug構成が選択されていることを確認してください。

Run Configurations

  1. 左側のメニューのProjectsセクションに移動します。
  2. Buildセクションに移動します

Projects >> Build

  1. Build Stepsの下で、Additional arguments入力ボックスを探します。
  2. マクロ定義を入力します(たとえば、コードの#ifdef DEBUGsのDEBUG。私の場合は__CTS_DEBUG__です)

Additional Arguments

これで、マクロは、デバッグ構成を使用している場合にのみ定義されます。 Releaseconfig(手順1を参照)を選択すると、自動的に未定義になり、条件に応じてコンパイルされたデバッグコードが削除されます。下の写真は、あなたがいつも望んでいたものです。

結果

debugconfigが選択された状態

Debug Config

release構成を選択した場合:

Release Config

3
code_dredd

QtCreatorのプロジェクト設定でいくつかのPREPROCESSORを定義できます。ここにはQtCreatorはありませんが、プロジェクト構成用のタブがあることを覚えています。

1