私は本のMakefileを使っています。」高度なLinuxプログラミング(2001)」[パスワード]。これを見ると変です。GNUが作るMakefileでコンパイラを指定しなくても、コードは正しくコンパイルされます。レシピなしで焼くのと同じです!
以下はコードの最小バージョンです。
test.c
int main(){}
ファイルの生成
all: test
そして実際に変化を作りましょう!実行するコマンドは次のとおりです。
cc test.c -o test
ドキュメントに役立つコンテンツが見つかりません。どうやってこれができますか?
PS:追加すると、言語がtest.c
利用可能なため指定されていません。 GNUは、その言語が存在するか(存在しない場合)代わりにmake
それを使用します。cc
test.cpp
test.cc
test.c
g++
c++
答え1
活用してみてください組み込みルール。具体的には、Cコードをコンパイルする方法と単一のオブジェクトプログラムをリンクする方法を教えてください。
実際、Makefileも必要ありません。
make test
一つもなく動作します。
これを可能にする隠しルールを表示するには、-p
Makefileなしでオプションを使用します。
make -p -f /dev/null
この-r
オプションは、これらの組み込みルールを無効にします。
指摘したとおりアレフゼロ、Makeには長い間(常にそうではありませんが)Stuart Feldmanによって書かれたUnix V7の最初のバージョンの基本的な規則がありました。それらを定義するfiles.c
と彼の1979年の論文それらに言及しなさい。彼らも同じです。POSIX仕様。 (これはMakeのすべての実装がこれをサポートしているわけではありません。以前のBorland Make for DOSは、少なくともバージョン3.0より前ではサポートされていません。)