web-dev-qa-db-ja.com

makeコマンドmakefile:18のエラー:***セパレータがありません。やめる

以下にコピーされた次のmakeファイルの場合、セパレーターエラーが表示されます。タブスペースに問題はないようです。

OBJS = driver.o snapshot.o
SHOBJS = malloc.o mymemory.o
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
Snapshot: $(OBJS)
  $(CC) $(LFLAGS) $(OBJS) -o Snapshot
driver.o: snapshot.h driver.cpp
  $(CC) $(CFLAGS) driver.cpp
snapshot.o: mymemory.h snapshot.h snapshot.cpp
  $(CC) $(CFLAGS) snapshot.cpp
libmymemory.so: $(SHOBJS)
  gcc -shared -o libmymemory.so malloc.o mymemory.o
malloc.o: malloc.c
  gcc -fPIC -g -c -Wall malloc.c
mymemory.o: mymemory.cpp
 gcc -fPIC -g -c -Wall mymemory.cpp 
clean:
 \rm *.o *~ Snapshot
31
subramanian

行18はgcc -fPIC -g -c -Wall mymemory.cpp。 Makeは通常、:。この行をコマンドとして検出していません。意図を誤って入力しました。タブが必要なスペースがあります。

優れたエディターは、スペースで始まるメイクファイルの行を強調表示しますが、代わりにタブで始まるように見えます。

62
Gilles

ファイルがメイクファイルの行の先頭でタブ文字の代わりにスペースを使用したときに、このエラーメッセージを見ました。

20
Drew Noakes

これは主に、インターネットからコードをコピーして貼り付けると発生します。削除キーを使用して、インデントされた行からすべてのスペースを削除します。次に、タブキーを1行に1回だけ押します。

保存して、ファイルを再度実行してください。これで動作するはずです。これは私のために働いた。

5
Namit Gupta

それが正確であるか、コードをオンラインで貼り付けることによるアーチファクトかはわかりませんが、ファイルの最後の2つのコマンドのインデントは、上のコマンドよりも小さいように見えます。間隔を慎重に再確認してください。

3
bta