为多个 UNIX 平台编写软件
2008-11-13 08:29:12 来源:WEB开发网显然,为了获得系统提供的各种好处,必须首先告知自动工具环境通常将如何构建应用程序,并使用自动工具系统扫描您的源代码,从而确定为了让您的应用程序正常工作所需的函数、库和其他组件。
设置项目结构
使用自动工具的第一步是为应用程序创建合适的结构。对于此示例,将使用简单的计算器应用程序(请参见下载),该应用程序依赖于一个词法分析组件(要求使用 lex)和一个语法组件(要求使用 yacc)以及数个支持特定操作的其他文件。可以在清单 4 中看到相关的文件列表。
清单 4. 计算器的源文件
total 28
-rwxrwx--x 1 mc mcslp 458 Jan 25 17:19 Makefile*
-rwxrwx--x 1 mc mcslp 129 Apr 16 1997 calc.h*
-rwxrwx--x 1 mc mcslp 4216 Jun 11 1997 calcparse.y*
-rwxrwx--x 1 mc mcslp 136 Jun 8 1997 const.c*
-rwxrwx--x 1 mc mcslp 643 Apr 16 1997 fmath.c*
-rwxrwx--x 1 mc mcslp 1095 Jan 25 17:16 lex.l*
清单 5 中显示了手动编写的用于构建计算器的 Makefile。
清单 5. 一个手动编写的 Makefile
YFLAGS = -d
PROGRAM = calc
OBJS = calcparse.tab.o lex.yy.o fmath.o const.o
SRCS = calcparse.tab.c lex.yy.c fmath.c const.c
CC = gcc #C compiler
all: $(PROGRAM)
.c.o: $(SRCS)
$(CC) -c $*.c -o $@ -O
calcparse.tab.c: calcparse.y
bison $(YFLAGS) calcparse.y
lex.yy.c: lex.l
flex lex.l
calc: $(OBJS)
$(CC) $(OBJS) -o $@ -lfl -lm
clean:; rm -f $(OBJS) core *~ #* *.o $(PROGRAM)
y.* lex.yy.* calcparse.tab.*
更多精彩
赞助商链接