毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 报告 >> 正文

计算机源代码编写规范GNU编码规范 第3页

更新时间:2014-6-15:  来源:毕业论文
本章叙述为GNU程序书写Makefile的惯例。
Makefile的通用惯例
每个Makefile都应该包含这一行:
SHELL = /bin/sh
以避免那些由从环境中继承SHELL变量的系统带来的麻烦。 (GNU make永远不会出现这个问题。)
不要假定`.'出现在用于寻找可执行的命令的路径中。当你需要在make期间运行作为你的 包的一部分的程序时,如果程序是作为make的一部分而创建的,请确保它使用了`./',或者 如果文件是不会被改变的源代码的一部分,请确保它使用了`$(srcdir)/'。
如果运行`configure'时使用了选项`--srcdir',那么`./'与 `$(srcdir)/'之间的区别就十分重要。一下形式的规则:
foo.1 : foo.man sedscript
        sed -e sedscript foo.man > foo.1
将在当前目录不是源代码目录的情况下导致错误,这是因为`foo.man'和`sedscript' 不在当前目录中。
在使用GNU make的时候,由于不论源文件在那里,`make'的自动变量`$<' 都将表示它,所以在只存在一个依赖文件的情况下,依靠`VPATH'来寻找源文件仍然是可行的。 (许多版本的make只在隐含规则中设置`$<'。)如下的makefile目标:
foo.o : bar.c
        $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
将被如下目标所替代:
foo.o : bar.c
        $(CC) $(CFLAGS) $< -o $@
以便使`VPATH'能够正确地工作。当目标含有多的依赖文件时,显式地使用`$(srcdir)' 让规则正常工作的最简单办法。例如,上述为`foo.1'而提供的目标最好被写作:
foo.1 : foo.man sedscript
        sed -s $(srcdir)/sedscript $(srcdir)/foo.man > foo.1
Makefile中的工具
书写能够在sh,而不是在csh,中运行的Makefile命令(以及任何shell脚本,例如 configure)。不要使用任何ksh或者bash特殊的功能。
为创建和安装而提供的configure脚本和Makefile规则不要直接使用任何工具,除了以下的几个之外:
cat cmp cp echo egrep expr grep
ln mkdir mv pwd rm rmdir sed test touch
坚持使用这些程序通常支持的选项。例如,因为许多系统不支持`mkdir -p',尽管它可能有些方便, 但不要使用它。
为创建和安装而提供的Makefile规则还可以使用编译器和相关的程序,但应该通过make变量以便 用户对它们进行替换。下面是一些我们所说的相关的程序:
ar bison cc flex install ld lex
make makeinfo ranlib texi2dvi yacc
在你使用ranlib的时候,你应该测试它是否存在,并且仅仅在它存在的情况下运行它,以使得发布 版本在那些没有ranlib的系统中也能够工作。
如果你使用了符号连接,你应该为没有符号连接的系统实现一个替代手段。
你可以在只打算用于特定系统的Makefile的部分(或者脚本)中使用你能够确认在那些系统上存在的工具。
为用户提供的标准目标
所有的GNU程序应该在它们的Makefile中含有下列目标:
`all' 本文来自优.文,论-文·网原文请找腾讯752018766
编译整个程序。它应该是缺省目标。这个目标不需要重新创建任何文档文件;Info文件被包含在发布版本中, 同时,只有在用户明确地要求创建DVI文件的时候才创建DVI文件。 `install'

上一页  [1] [2] [3] [4] [5] 下一页

计算机源代码编写规范GNU编码规范 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。