プログラムのどの部分をコンパイルするかを制御できるように、#define VAR
に相当するもの(Cプログラム内)をmakefileに入れることはできますか?
cc
のlinux
マンページに従ってください
-D name=definition
The contents of definition are tokenized and processed as if they appeared during translation phase three in a #define directive. In
particular, the definition will be truncated by embedded newline characters.
Makefile
を編集して表示
CFLAGS = -D VAR1 -D VAR2= *何か*
Makefileでデフォルトのルールを使用している場合、これは自動的に機能します。そうしないで、Cコンパイラを明示的に呼び出している場合は、次のように記述してください。
$(CC)$(CFLAGS)-c -o $ @ $ <
Makefileではなく_CFLAGS=...
_ aboveをコマンドラインで使用できる場合(man(1)
のマニュアルページを参照)、さらに可愛くなります。これにより、最後にコンパイルパラメータを簡単に再構成できますが、パラメータは保持されません。
ベストプラクティスには、CPPFLAGS
の代わりにCFLAGS
を使用すること、および_+=
_の代わりに_=
_を使用することが含まれます。ただし、これらの機能のサポートは上記ほど一般的ではなく、makeシステムに依存します。
はい。
ほとんどのコンパイラは、#defineを指定するためのコマンドラインオプションをサポートしています。 Visual C++の場合、これは / Dオプション です。