1. ホーム
  2. c

[解決済み] マクロの定義をmakeのコマンドライン引数(-D)からCのソースコードに渡すには?

2022-07-14 14:27:52

質問

私は通常、"make コマンドライン" から "makefile" にマクロ定義を渡すとき、オプション : -Dname=value "というオプションを使用しています。定義は makefile の内部でアクセス可能です。

私はまた、"makefile" から "source code" へ、同様のコンパイラーオプションを使用してマクロ定義を渡します。 -Dname=value (多くのコンパイラでサポートされています) を使用しています。この定義は、ソースコードでアクセス可能です。

私が今必要としているのは、makefile のユーザーが、makefile の中で何も変更することなく、"make.exe commandline" から "source code" にすぐに任意のマクロ定義を渡すことができるようにすることです。

というわけで、ユーザは : make -f mymakefile.mk -SOMEOPTION var=5 と入力します。

と入力すると、main.c のコードに直接 var が表示されます。

int main()
{
  int i = var;
}

どのように解決するのですか?

コール make コマンドはこのようになります。

make CFLAGS=-Dvar=42

を必ず使用してください。 $(CFLAGS) をMakefileのコンパイルコマンドに追加してください。jørgensen が言ったように、変数の代入は make コマンドで上書きされます。 CFLAGS の値は、すでにMakefileで定義されています。

を設定することもできます。 -Dvar=42 とは別の変数で CFLAGS でこの変数を再利用します。 CFLAGS を完全にオーバーライドしないように CFLAGS .