このMakefileはコンパイラを指定せずにどのようにCプログラムを生成しますか?

このMakefileはコンパイラを指定せずにどのようにCプログラムを生成しますか?

私は本のMakefileを使っています。」高度なLinuxプログラミング(2001)」[パスワード]。これを見ると変です。GNUが作るMakefileでコンパイラを指定しなくても、コードは正しくコンパイルされます。レシピなしで焼くのと同じです!

以下はコードの最小バージョンです。

test.c

int main(){}

ファイルの生成

all:            test

そして実際に変化を作りましょう!実行するコマンドは次のとおりです。

cc     test.c   -o test

ドキュメントに役立つコンテンツが見つかりません。どうやってこれができますか?


PS:追加すると、言語がtest.c利用可能なため指定されていません。 GNUは、その言語が存在するか(存在しない場合)代わりにmakeそれを使用します。cctest.cpptest.cctest.cg++c++

ベストアンサー1

活用してみてください組み込みルール。具体的には、Cコードをコンパイルする方法と単一のオブジェクトプログラムをリンクする方法を教えてください。

実際、Makefileも必要ありません。

make test

一つもなく動作します。

これを可能にする隠しルールを表示するには、-pMakefileなしでオプションを使用します。

make -p -f /dev/null

この-rオプションは、これらの組み込みルールを無効にします。

指摘したとおりアレフゼロ、Makeには長い間(常にそうではありませんが)Stuart Feldmanによって書かれたUnix V7の最初のバージョンの基本的な規則がありました。それらを定義するfiles.c彼の1979年の論文それらに言及しなさい。彼らも同じです。POSIX仕様。 (これはMakeのすべての実装がこれをサポートしているわけではありません。以前のBorland Make for DOSは、少なくともバージョン3.0より前ではサポートされていません。)

おすすめ記事