しばらくの間、正しいmakefileを作成しようとしていますが、「make:***ターゲットを「すべて」にするルールがありません。停止してください」というエラーが表示され続けます。
私は1つのメインプログラムを持っています:mpasswdsort.cとcファイルはmpasswdsortによって使用され、ヘッダーも付属しています:list.cとlist.h
私のメイクファイル:
CC=gcc
CFLAGS=-Wall -pedantic -ansi
all: mpasswdsort
server: mpasswdsort.o list.o
$(CC) mpasswdsort.o list.o -o mpasswdsort
mpasswdsort.o: mpasswdsort.cpp
$(CC) $(CFLAGS) mpasswdsort.cpp
list.o: list.cpp
$(CC) $(CFLAGS) list.cpp
clean:
rm -f server client *.o core
Makefileが間違っているのか、それともmakefilが.txtファイルであると想定されていないのかわかりません。
表示されるエラーメッセージは、make
にターゲット「all」を構築するためのルールが表示されないことを示しています。これは、メイクファイルがまったくない場合にGNU make
が発行する診断とまったく同じです。提示するメイクファイルの内容はdoのルールが含まれているためです。 「すべて」をターゲットにすると、make
はそれらを認識していないと結論付けます。
これは、makefileが別のディレクトリにあるためである可能性があります。これは、その名前がデフォルトでmake
が試行するものとは異なるためです(Makefile
またはmakefile
は従来型です。GNUのバージョンのmake
はGNUmakefile
)もチェックします。または、アクセス制御の問題によりmake
がファイルを読み取れないためです。あなたが発言したので
Makefileが間違っているのか、それともmakefilが.txtファイルであると想定されていないのかわかりません。
、最も可能性の高い結論は、(少なくとも)ファイル名が間違っているということです。 Makefileはテキストファイルですが、テキストファイル名は必ずしも「.txt」で終わるとは限りません。実際、Linuxやその他のUNIXでは、ほとんどのUNIXはそうではありません。メイクファイルにはそのような拡張子を付けないでください。ただし、技術的には、-f
オプションを使用して、使用するメイクファイルの名前をmake
に指示できます。