我想为很酷的语言编写一个编译器,我有一个Makefile:
FFLAGS=
BFLAGS=-d -v -y
CFLAGS=-g -Wall -Wextra -std=c++11 -Wno-write-strings -I /usr/local/boost_1_50_0
FLEX=flex
BISON=bison
CC=g++
SRCS=y.tab.c ast.cpp tokentable.cpp symboltable.cpp main.cpp lex.yy.c semanticanalyzer.cpp astnodevisitor.cpp constants.cpp astnodetypechecker.cpp utility.cpp astnodecodegenerator.cpp
OBJS=y.tab.o ast.o tokentable.o symboltable.o main.o lex.yy.o semanticanalyzer.o astnodevisitor.o constants.o astnodetypechecker.o utility.o astnodecodegenerator.o
cooc : ${OBJS}
${CC} ${CFLAGS} -o $@ ${OBJS}
%.o : %.cpp
${CC} ${CFLAGS} -c $<
y.tab.c : cool.y
${BISON} ${BFLAGS} cool.y
lex.yy.c : cool.flex
${FLEX} ${FFLAGS} cool.flex
.depend: ${SRCS}
rm -f ./.depend
${CC} ${CFLAGS} -MM $^>>./.depend
include .depend
但是当我在cmd中运行它时,我得到了这些错误,在这部分“rm -f ./.depend”冒号是预期的,最后3行有语法错误。请帮我解决问题。
答案 0 :(得分:1)
如果您收到错误,请发布确切的错误文本(以及有用的周边环境)。请不要复述错误消息。错误消息中的确切短语,标点符号等通常很关键。还提供系统类型和软件版本(在本例中为make)。例如,我知道GNU make(至少)中没有任何内容会显示“冒号预期”之类的错误。
但是,我猜你用空格缩进了你的食谱线(rm -f ...
等)。每个配方行上的第一个字符必须是实际的TAB字符。
我不知道为什么include
行会出现语法错误。再次,如果您显示实际的错误文本,我们可能会更有帮助。