2017-09-08 95 views
1

私はしばらくの間、正しいmakefileを作ろうとしていますが、 "make:***ターゲットを` all 'にするルールはありません。makefile - make:***ターゲットをallにするルールはありません '。停止

私は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ファイルではないと確信しています。

+0

@JohnBollinger氏によると、あなたのメークファイルの名前は何ですか(そしてその許可は何ですか?) – KevinDTimm

+1

また、あなたのmakefileは 'すべて'が 'mpasswdsort'を含んでいると言っていますが、' mpasswdsort'のルールはありません – KevinDTimm

+0

それはおそらくエラー@KevinDTimmですが、必ずしもそうではありません。 'make 'がその組み込み規則の1つを介して' mpasswdsort'を構築する方法を理解できれば、明示的規則を提供する必要はありません。この場合、 'mpasswdsort.o'からビルドしようとします。ビルドには明示的なルールがあります。私はおそらくそれがリンクに失敗するだろうと思うが、診断は質問に提示されたものとは大きく異なるだろう。 –

答えて

2

表示されているエラーメッセージは、makeにターゲット "all"を構築するためのルールが表示されないことを示しています。 GNU makeがメイクファイルがまったくないときに出すのとまったく同じ診断です。 のメークファイルの内容にはに "all"というターゲットのルールが含まれているため、makeには表示されません。

その名のうち、デフォルトで make試行異なるため、メイクファイルは、別のディレクトリにあるためかもしれ

Makefile又はmakefileが一般的である。makeのGNUのバージョンもGNUmakefileをチェック)、またはaccess-ため制御の問題により、makeはファイルを読み取ることができません。あなたが再演したので

メイクファイルに間違っているか、またはmakefilが.txtファイルであると思われるかどうかはわかりません。

、最も可能性の高い結論は、(少なくとも)ファイル名が間違っていることです。 Makefileはテキストファイルですが、テキストファイル名は必ず ".txt"で終わるとは限りません。実際、Linuxやその他のUNIXでは、ほとんどの人がそうではありません。メイクファイルにはこのような拡張子を付けるべきではありませんが、技術的には-fオプションを使用してmakeに使用するメイクファイルの名前を伝えることができます。

+0

'make 'のすべての標準バージョンは、' makefile'と 'Makefile'の両方を元のUnixの 'make'プログラム - POSIX [' make'](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html)を参照してください。大文字と小文字を区別しないファイルシステム(Mac、Windows)では、それらの違いはありません。 –

+0

ありがとうございます、@JonathanLeffler、私はあなたの意見に照らして答えを更新しました。 –

関連する問題