2017-03-16 17 views
-2

これは私のMakefileです。エラー "*** seperator。stop"がありません。 ライブラリをコンパイルしようとしていますが、何らかの理由でこのエラーメッセージが表示されます。同様の他のSOの質問は、それがタブの問題であることを示唆していますが、私はそれを解決できませんでした。C Makefile - セパレータがありません。 stop

CC=g++ 
RANLIB=ranlib 

LIBSRC=osm.c 
LIBOBJ=$(LIBSRC:.c=.o) 

INCS=-I. 
CFLAGS = -Wall -g $(INCS) 
LOADLIBES = -L./ 

OSMLIB = libosm.a 
TARGETS = $(OSMLIB) 

TAR=tar 
TARFLAGS=-cvf 
TARNAME=ex1.tar 
TARSRCS=$(LIBSRC) Makefile README 

all: $(TARGETS) 

$(TARGETS): $(LIBOBJ) 
$(AR) $(ARFLAGS) [email protected] $^ //this line fails with the warning 
$(RANLIB) [email protected] 

clean: 
$(RM) $(TARGETS) $(OSMLIB) $(OBJ) $(LIBOBJ) *~ *core 

depend: 
makedepend -- $(CFLAGS) -- $(SRC) $(LIBSRC) 

tar: 
$(TAR) $(TARFLAGS) $(TARNAME) $(TARSRCS) 
+1

タブのような実際のタブ(ないスペース)を意図しなければなりませんコマンドラインの最初に必須です。 – StoryTeller

+0

タブを必要とする行はどれですか? – Sharonica

答えて

0

makeファイルには特定の構造と構文があります。一般的に:

<target> : <dependencies> 
<tab><instructions> 

行頭のタブは構文の一部です。

2

Makefileでは、ルール内のすべての「コマンド」を1つのタブでインデントする必要があります。

あなたは、例えば、この規則き

clean: 
$(RM) $(TARGETS) $(OSMLIB) $(OBJ) $(LIBOBJ) *~ *core 

間違っている、コマンドラインが

clean: 
    $(RM) $(TARGETS) $(OSMLIB) $(OBJ) $(LIBOBJ) *~ *core 
+0

ありがとう、私はMakefileでコメントした特定の行にエラーが表示されるのはなぜですか? – Sharonica

+0

@シャロニカ・エラーのある*最初の*ですので。あなたがそれを修正して他のものを修正しないと、あなたは次のエラーを受け取ります。 –

+0

問題は明らかにCLIONのスペースとしての字下げでした。これは本当にすでに処理されているはずです。 – Sharonica

2
CC=g++ 
RANLIB=ranlib 

LIBSRC=osm.c 
LIBOBJ=$(LIBSRC:.c=.o) 

INCS=-I. 
CFLAGS = -Wall -g $(INCS) 
LOADLIBES = -L./ 

OSMLIB = libosm.a 
TARGETS = $(OSMLIB) 

TAR=tar 
TARFLAGS=-cvf 
TARNAME=ex1.tar 
TARSRCS=$(LIBSRC) Makefile README 

all: $(TARGETS) 

$(TARGETS): $(LIBOBJ) 
    $(AR) $(ARFLAGS) [email protected] $^ //this line fails with the warning 
    $(RANLIB) [email protected] 

clean: 
    $(RM) $(TARGETS) $(OSMLIB) $(OBJ) $(LIBOBJ) *~ *core 

depend: 
    makedepend -- $(CFLAGS) -- $(SRC) $(LIBSRC) 

tar: 
    $(TAR) $(TARFLAGS) $(TARNAME) $(TARSRCS) 
関連する問題