私は-のCFLAGSを見ています
CFLAGS=-g -w -D LINUX -O3 -fpermissive
makefileで。 -Dフラグは何をしますか?私はmanページでそれを見る
-D name
Predefine name as a macro, with definition 1.
しかし、私はそれを解釈する方法がわかりません。私の解釈は...それはLINUXをマクロにし、Linux環境では-03と-fpermissiveのみを実行します。そうですか?そうでない場合は、何ですか?助けてくれてありがとう
これは、コンパイルされるファイルのソースコードにステートメント#define LINUX 1
を追加することと同じです。他のコンパイルフラグには影響しません。これは、コードで#ifdef
ステートメントを有効にする簡単な方法であるためです。したがって、次のようなコードを作成できます。
#ifdef LINUX
foo;
#endif
-D
フラグで制御できるマクロが有効になっている場合にのみ有効になります。したがって、ソースファイルを編集せずに、コンパイル時に条件付きコンパイルステートメントを有効/無効にする簡単な方法です。
-O3
とは何の関係もありません。基本的には、
#define LINUX 1
コンパイルされたファイルの先頭。