【发布时间】:2015-09-01 22:57:46
【问题描述】:
我正在尝试编译我的程序,它有一个 lex 文件和一个 yacc 文件以及几个 C 文件。我在 the Flex manual 中遇到了这个示例。
我有几个关于这个 makefile 的问题。它没有指定编译器,例如 gcc,makefile 如何知道如何创建目标,例如 scan.o 和 parse.o 和 myprogram.o?
# Makefile example -- scanner and parser.
# Creates "myprogram" from "scan.l", "parse.y", and "myprogram.c"
#
LEX = flex
YACC = bison -y
YFLAGS = -d
objects = scan.o parse.o myprogram.o
myprogram: $(objects)
scan.o: scan.l parse.c
parse.o: parse.y
myprogram.o: myprogram.c
【问题讨论】:
-
来自同一页面:'以下 Makefile 没有明确指示 make 如何从 foo.l 构建 foo.c。相反,它依赖于 make 程序的隐含规则来构建中间文件 scan.c:'。不过,为
.os 添加明确的规则仍然是一个更好的主意。
标签: c makefile bison flex-lexer