为多个 UNIX 平台编写软件
2008-11-13 08:29:12 来源:WEB开发网为了将应用程序设置为与自动工具一起使用,请删除 Makefile,创建一个新目录(可以将其命名为 calc),然后创建一个子目录 (src),以便将所有源文件复制到其中。清单 6 可以看到此布局——已经可以使用自动工具。
清单 6. 已经可以与自动工具一起构建的源文件
./calc
./calc/src
./calc/src/calc.h
./calc/src/calcparser.c
./calc/src/calcparser.h
./calc/src/calcparser.y
./calc/src/const.c
./calc/src/fmath.c
./calc/src/lex.c
./calc/src/lex.l
现在已经可以开始使用自动工具进行配置了。
创建核心 Makefile
需要在源目录的每个目录(包括项目的根)中创建一个 Makefile.am 文件。根中的 Makefile.am 用于引用其他目录的内容;每个源目录中的 Makefile.am 仅用于定义该目录中信息的构建过程和要求。
因此,对于您的示例,calc 中的 Makefile.am 将与以下所示的文本类似:
SUBDIRS=src
这直接指定了包含将使用配置系统配置(和构建)的环境的子目录列表。
您的 src 目录中的 Makefile.am 文件应与清单 7 中所示类似。
清单 7. 用于构建缺省目标的 src/Makefile.am 框架
calcprgdir=../
calcprg_PROGRAMS=calc
calc_SOURCES=lex.l calcparser.y fmath.c const.c
AM_YFLAGS=-d
calc_LDADD=-lfl -lm
各行的前缀非常重要:前缀用于标识选项应用到的目标。
清单 7 中的第一行指定执行 make 安装时应用程序的最终目标目录。构建此演示程序时,将使用父目录作为目标安装。
第二行指定将生成的应用程序的名称。第三行列出构建目标所需的源文件。请注意,尽管您的应用程序依赖于独立工具(即 lex 或 flex 和 yacc 或 bison)生成的 C 文件,但并不需要显式地指定此阶段。这是因为自动工具包已经基于其扩展名知道了如何从这些源文件构建 C 源代码。
更多精彩
赞助商链接