16

What does the DEFINES += includthisvariable do in QT for a .pro file?

If it works like the #define in C++, where is includethisvariable defined so that the preprocessor can replace includethisvariable with the value I set?

I understand what #define does in c++ because you set the value beside what you define. However here it seems like you just list a name...The QT docs didn't help explain this for me.

4

4 に答える 4

20

Qt プロジェクト ファイルの変数内の項目は、オプション (または使用されているコンパイラに適したもの) を使用DEFINESしてコンパイラのコマンド ラインで終了します。-D単に定義するのではなく、マクロ定義に値を与えるには、次を使用します。

DEFINES += FOOBAR=foobar_value

これは、コンパイラのコマンド ラインに次のように表示されます。-DFOOBAR=foobar_value

スペースが必要な場合は、値を引用符で囲み、コンパイラ コマンド ラインで渡される引用符をエスケープする必要があります。

DEFINES += FOOBAR="\"foobar value\""

これは次のように表示されます。-DFOOBAR="foobar value"

于 2013-04-26T19:53:46.937 に答える
6

はい、同じように動作します。コンパイル中のソースにDEFINES += includethisvariableプリプロセッサ シンボルを含めます。includethisvariable

これは、次のような #ifdef ステートメントを意味します。

#ifdef includethisvariable
...
...
#endif

コンパイル中のソースに含まれています。

値を持つマクロも定義可能

`DEFINES += "MAXBUFFERSIZE=4096"
于 2013-04-26T19:52:01.453 に答える
2

qmake ファイルで文字列リテラルのマクロを定義したい場合は、#define VAR "Some string"

次のようになります。

DEFINES += CODE_WORKING_DIR=\\\"$$PWD\\\"

g++ (またはコンパイルに使用しているもの) への引数としてそれを生成するように:

g++ -c -DCODE_WORKING_DIR=\"/path/to/my/code\"

それは醜いです。誰かがより良い方法を知っているなら、私に知らせてください。

于 2018-08-11T08:51:57.100 に答える
1

ドキュメントから:

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

#define NAME value
于 2013-04-26T19:56:08.597 に答える