私は簡単なprintf Cコードを書き、簡単なメイクファイルを作成しました。 私は変数の値はこのように、それらの値なしでgccの実行に続いて、ccの実行に入り、CFLAGS、CPPFLAGSとLDFLAGSでmakeを実行:私は構築されたプログラムを実行するとCFLAGS CPPFLAGSとLDFLAGSはccを呼び出しますが、gccに値を渡しません
$ CFLAGS="-I." CPPFLAGS="-D TESTEDEFINE" CXXFLAGS="TESTECXXFLAGS" LDFLAGS="-L." LFLAGS="TESTELFLAGS" make
cc -I. -D TESTEDEFINE -L. teste.c -o teste
gcc -o teste teste.c
、 defineは、定義されていない#elseのprintfを与えるので定義されていません。
teste.c
#include <stdio.h>
int main()
{
#if defined(TESTEDEFINE)
printf("TESTEDEFINE!!!");
#else
printf("!!!");
#endif
return 0;
}
Makefileの
all: teste
gcc -o teste teste.c
'gcc -o teste teste.c'を実行するように指示すると、それが実行されます。その行を削除した場合、マクロが機能することがあります。代わりに '$ {CC} -o $ @ $ {CPPFLAGS} $ {CFLAGS} $ {LDFLAGS} $ {LDLIBS}'をレシピの行として使用してください。 –
フラグは、Makefileで明示的に使用する場合、またはルールのコマンドを省略した場合にのみ機能します。 –
はあなたのメークファイル全体を見るのに役立つかもしれません。もしそうなら、あなたは "単純なmakefile"について冗談を言っていませんでした。 – yano