尝试为 lex 程序创建 makefile
Trying to create makefile for lex program
注意,我是 "makefile"
的新手
我有一个名为 "ba.lex" 的程序,我需要为它创建 make 文件。
没有makefile,我先调用:
flex ba.lex
然后,我创建可执行文件:
gcc -o ba lex.yy.c -lfl
我还需要清理中间文件:lex.yy.c
我如何将这些放在 makefile 中。
更新:
我试过这个:
flex ba.lex
gcc -o ba lex.yy.c -lfl
但我得到:makefile:1: *** commands commence before first target. Stop.
在 Makefile
中,您不只是编写 命令 ,这就是 shell 脚本的用途。 Makefile
有 3 个主要实体:
- 目标
- 依赖关系
- 命令 运行
一个非常简单的Makefile
例子可以是这个:
build: a.out
a.out: a.c
<TAB> gcc -Wall a.c
这里,build
是一个依赖于 a.out
的目标(这是一个文件,但我们也创建了一个具有该名称的目标)。目标 a.out
取决于 a.c
文件。当你 运行 make
是:
时会发生什么
if (! file_exists(a.out) || last_change(a.out) < last_change(a.c)) then
execute gcc command
在您的情况下,可能的 Makefile
可以是:
build: ba
ba: lex.yy.c
<TAB> gcc -o ba lex.yy.c -lfl
lex.yy.c: ba.lex
<TAB> flex ba.lex
clean:
<TAB> rm lex.yy.c ba *.o
注意,我是 "makefile"
的新手我有一个名为 "ba.lex" 的程序,我需要为它创建 make 文件。
没有makefile,我先调用:
flex ba.lex
然后,我创建可执行文件:
gcc -o ba lex.yy.c -lfl
我还需要清理中间文件:lex.yy.c
我如何将这些放在 makefile 中。
更新: 我试过这个:
flex ba.lex
gcc -o ba lex.yy.c -lfl
但我得到:makefile:1: *** commands commence before first target. Stop.
在 Makefile
中,您不只是编写 命令 ,这就是 shell 脚本的用途。 Makefile
有 3 个主要实体:
- 目标
- 依赖关系
- 命令 运行
一个非常简单的Makefile
例子可以是这个:
build: a.out
a.out: a.c
<TAB> gcc -Wall a.c
这里,build
是一个依赖于 a.out
的目标(这是一个文件,但我们也创建了一个具有该名称的目标)。目标 a.out
取决于 a.c
文件。当你 运行 make
是:
if (! file_exists(a.out) || last_change(a.out) < last_change(a.c)) then
execute gcc command
在您的情况下,可能的 Makefile
可以是:
build: ba
ba: lex.yy.c
<TAB> gcc -o ba lex.yy.c -lfl
lex.yy.c: ba.lex
<TAB> flex ba.lex
clean:
<TAB> rm lex.yy.c ba *.o