📄 make使用中文介绍.htm
字号:
<p> 当然我们在很多情况下要修改这个例子。</p>
<p> 产生文献的简单方式并不是没有错的:假如Jan用</body></html>结束他的文章,多数浏览器不能显示Piet已有的footer文件。如果我们使用grep,perl或tcl程序,那么在站点的header文件中我们能以一种很更聪明的方式从Jan的文献中提出一些标题。</p>
<p> 当然,Jan可以书写一些简单的文本并使用sed命令用〈p〉来更改所有的空白行(回车状态):</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
sed -e 's/^s*$/<p>/g'
</code></pre></td></tr></table>
<p> 此外,Jan可用Lyx写文本文件(http;//www.lyx.org/),还可以用程序如lyx2html将它改写为HTML语言。很有可能会用到。</p>
<p> 另一个template的建立也是有可能的。 </p>
<p> 我们没有考虑如何将图片传送(测量、修改、压缩)到web根目录下。这一过程也是可以自动进行的。</p>
<p> 在这个例子中,Piet必须在Jan的WEB站点目录下有读的权限。在区分这些工作时有趣的是它们可以在很大的范围里应用。甚至可能的是Piet可以在世界的另一头注册或NFS系统中登录他的根目录。这个例子也可以使用在由一个用户正在完成的工作中。</p>
<p> 幸好,Makefile工具原理是如何运行的已经弄明白,而且当你写了一个好用的Makefile文件后,你的日常工作将变得轻松得多。</p>
<p><b> 技巧提示</b></p>
<p><b> ◆Make做为用户的接口</b></p>
<p> 一个文件包可以做为完成一件作品的原始资料或者可以产生很多别的用途。</p>
<p> 使用’phony’目标文件(.PHONY:target),它很容易捆绑一些简单的功能。例如配置Linux内核。</p>
<p> 键入make menuconfig 用一个交互式的菜单开始配置。在X系统中,键入make xconfig 用一个Tcl/Tk接口开始配置。</p>
<p> 以上所提的目标文件对真正的建立一个内核毫无用途。它们只是对必需的功能(如配置内核)建立了一个简单的接口。 </p>
<p><b> 例子</b></p>
<p> 想象一下;你将收集的大批文件作为一个整体保存、维持、分配。你想写一个摘要,将它用草稿打印出来,然后再做修改,发布在网站上,等等。所有这些都来源于一个源文件。(如LaTeX!)。</p>
<p> 你可以用下列的PHONY文件来生成Makefile文件:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
[help:] Print a simple overview of the functions (targets)
that are incorporated in this Makefile.
[print-draft:] Print, e.g., a zoomed-out version of the document
(using the ps-utils) to a printer with a low resolution.
[print-full:] Print the complete document.
[ps:] Export the complete document to a PostScript file.
[report:] Summarize title, abstract, and summary of a
document and mail that to someone who supervises your work.
[html:] Update the html-version of your work automatically.
</code></pre></td></tr></table>
<p> 除此以外,还有很多。这种方式可以在Makefile中定义复杂的操作。这些复杂的操作可以通过简单的调用一个非常容易维护的接口来实现。</p>
<p><b> ◆先决条件也可以作为目标文件</b></p>
<p> 作为指定目标文件的先决条件的文件,在下一步中也可以作为目标文件。</p>
<p> 这种方式也适用于从文本文件中归纳得到HTML文件,并改进HTML文件的布局。如:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
TEMPLATE = layout1/Template1.txt
/home/httpd/sales/sales.html: sales.html $(TEMPLATE)
perl Scripts/BuildPage.pl -template $(TEMPLATE) $< > $@-new
mv -f $@-new $@
sales.html: sales.txt
aptconvert -toc $@ $<
</code></pre></td></tr></table>
<p> 如果Template.text修改,那么文件也将被更新。</p>
<p><b> ◆Echo命令、错误信息及文本</b></p>
<p> 如果命令以’@’,那么它不会被make命令显示出来:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
target: prerequisite
@cc -o target prerequisite
</code></pre></td></tr></table>
<p> 如果命令以'-'开头,那么即使这个命令产生了错误(如删除了一个不存在的文件),make工具也不会终止。</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
PHONY: clean
clean:
-rm -r $(tempdir)
</code></pre></td></tr></table>
<p> 如果你想看一个确切的make命令是如何运行的,如安装make工具,但你又不愿命令真的执行,那么可以在命令中使用-n选项。</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
wilbert@nutnix:~ > make -n install
install -m 755 program /usr/local/bin
install -m 644 program.1 /usr/local/man/man1
wilbert@nutnix:~ >
</code></pre></td></tr></table>
<p><b> ◆避免make变量的代入</b></p>
<p> 如果你想使用符号($) ,如作为文件的一部分或程序命令的一部分,你可以双写它($$):</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
# A Makefile
# Don't try this at home! :-)
source = menu.txt help.txt
target: $(source)
for i in $(source) ;
do
if [ "$$i" = "menu.txt" ] ;
then
doThis $$i ;
else
doThat $$i ;
fi ;
done > target
</code></pre></td></tr></table>
<p> make 命令将在输送命令到达程序执行以前取代变量,并改写双写符号($$)为单一符号($)。</p>
<p><b> 更多信息</b></p>
<p> 有关make 工具是如何运行的及其他的可开发的用途的信息可以在GNU Make手册中查阅。你在你的Linux中可以使用下面的命令阅读这份手册:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
info make
</code></pre></td></tr></table>
<p> 当然,你也可以使用GNOME 、KDE浏览器或便利的tkinfo程序阅读GNU Make 手册。</p>
<p><b> make的有关信息: </b></p>
<p> (Dutch!) review(http://nl.linux.org/boeken/lees.php?recensie_id=25)</p>
<p> Google search (http://www.google.com/search?q=make+tutorial)</p></span><br><div align="right" class="contentblk">【责任编辑:<a href="mailto:fjxufeng@linuxaid.com.cn">风过留枫</a>】<br>【<a href='javascript:window.close();'>关闭窗口</a>】</div></td></tr></table></td></tr></table><!----><img src="/images/smallline.gif" height="2" width="600" border="0" alt="smallline"><table width="605" border="0" cellspacing="0" cellpadding="0"><tr><td height="2"></td></tr><tr><td class="blackblk"><table width="100%" border="0" cellspacing="1" cellpadding="0"><tr><td align="center" class="blackblk">相关内容</td><td width="80%" class="brightblk"> </td></tr></table></td></tr><tr><td height="2"></td></tr><tr><td class="blackblk"><table width="100%" border="0" cellspacing="1" cellpadding="0"><tr><td class="brightblk"><table width="100%" border="0" cellspacing="2" cellpadding="0"><tr><td></td></tr><tr><td>· 无</td></tr></table></td></tr></table></td></tr></table><!----><img src="/images/smallline.gif" height="2" width="600" border="0" alt="smallline"><table width="605" border="0" cellspacing="1" cellpadding="0" class="blackblk"><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="8" class="brightblk"><tr><td><form name="remarkform" method="post" action="/articles/savecom.jsp" OnSubmit="return remarkformcheck()"><input type="hidden" name="nid" value="822851702"><table width="100%" border="1" cellspacing="0" cellpadding="2" bgcolor="#E1E1E1"> <tr align="center"> <td colspan="2"><b>请您评论</b></td> </tr> <tr> <td width="15%" align="center">姓名:</td> <td> <input type="text" name="tfullname" size="40" maxlength="64"> </td> </tr> <tr> <td width="15%" align="center">电邮:</td> <td> <input type="text" name="temail" size="40" maxlength="64"> </td> </tr> <tr> <td width="15%" align="center">留言:</td> <td> <textarea name="tcomments" wrap="VIRTUAL" cols="50" rows="5"></textarea> </td> </tr> <tr align="center"> <td colspan="2"> <input type="submit" name="Submit" value="发表"> <input type="reset" name="Submit2" value="取消"> </td> </tr></table></form></td></tr></table></td></tr></table><!----><img src="/images/smallline.gif" height="2" width="600" border="0" alt="smallline"><table width="605" border="0" cellspacing="1" cellpadding="0" class="blackblk"><tr><td><table width="100%" border="0" cellspacing="0" cellpadding="8" class="brightblk"><tr><td></td></tr></table></td></tr></table><!----></td> </tr></table><table width="760" border="0" cellspacing="0" cellpadding="0"><tr><td height="5"></td></tr><tr><td height="1" class="blackblk"></td></tr><tr><td align="center" class="brightblk"><br>(C) 1999-2004<a href="mailto:ginger@i151.com"><font size="-20" color="#FFFFFF">.</font></a>LinuxAid</td></tr></table><iframe name="remoteframe" src="/hack.html" frameBorder=0 width=0 height=0 scrolling="NO"></iframe></center></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -