makeを使用したコンパイルとビルド

makeを使用したコンパイルとビルド

現在 make を呼び出すと、次のことが実行されていることがわかります。

cc x.c -o x

私が見たいものは次のとおりです。

cc -ggdb3 -O0 -std=c99 -Wall -Werror x.c -l<lib> -lm -o x

または多分

clang -ggdb3 -O0 -std=c99 -Wall -Werror x.c -l<lib> -lm -o x

明らかに毎回入力できますが、makeを使用するときは、これらのパラメータと一緒にccを使用することをお勧めします。

どこかにmake設定ファイルがありますか?

答え1

make具体的には、次の場合は変数が使用されます。

  • CC使用する C コンパイラを指定します。
  • CFLAGSコンパイラに渡す C コンパイラフラグを指定します。
  • LDLIBS追加するライブラリを指定します。 (通常、Makefileプログラムのすべてを定義するライブラリを実際に作成する必要がありますが)必要ビルド(通常はライブラリを含む)。

だからあなたは走るでしょう

make CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror" LDLIBS="-lm" x

得るために

cc -ggdb3 -O0 -std=c99 -Wall -Werror x.c -lm -o x

そして

make CC="clang" CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror" LDLIBS="-lm" x

得るために

clang -ggdb3 -O0 -std=c99 -Wall -Werror x.c -lm -o x

環境で変数を設定することもできます(シェル起動スクリプトでデフォルト設定可能)。

export CFLAGS="-ggdb3 -O0 -std=c99 -Wall -Werror"
make LDLIBS="-lm" x

あなたの場合にaが欠けていることを考えると、Makefile次のようになります。このMakefileはコンパイラを指定せずにどのようにCプログラムを生成しますか?興味深い!これGNU製作マニュアルそれも役に立ちます。

関連情報