免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1732 | 回复: 3
打印 上一主题 下一主题

Makefile 的规则解析问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-07 09:38 |只看该作者 |倒序浏览
30可用积分
本帖最后由 Perlvim 于 2012-03-07 10:01 编辑

用make的大都是搞C语言的,但我现在确实在用Perl 重写Make ,所以想在这里问这个问题。我相信没有最厉害的,只有更厉害的高手在这里。

一个没有相应的更新命令的目标,如果文件不存在,就要查找隐含更新规则。
一个有相应的更新命令的目标,  如果文件不存在,就不查找隐含更新规则。

是这样吗?我感觉这个可能的现实很难接受。

因为 Make 怎么知道更新目标的命令是有效的呢?

以下两段代码将产生截然不同的解析结果
1.-------------------------------------
.PHONY : all test
.SUFFIXES : .pbc .pmc
.pmc.pbc :
        @echo hello .pbc.pmc

all : not_exists_file1.pbc not_exists_file2.pbc
        @echo hello all

not_exists_file1.pbc :
        @echo hello not_exists_file1.pbc

not_exists_file2.pbc :
        @echo hello not_exists_file2.pbc

test :
        touch not_exists_file1.pmc
        touch not_exists_file2.pmc
------------------------------------------
2.-----------------------------------
.PHONY : all test
.SUFFIXES : .pbc .pmc
.pmc.pbc :
        @echo hello .pbc.pmc

all : not_exists_file1.pbc not_exists_file2.pbc
        @echo hello all

not_exists_file1.pbc :
        @echo hello not_exists_file1.pbc

not_exists_file2.pbc :
#        @echo hello not_exists_file2.pbc

test :
        touch not_exists_file1.pmc
        touch not_exists_file2.pmc
-----------------------------------------

是这样吗?

论坛徽章:
0
2 [报告]
发表于 2012-03-07 09:43 |只看该作者
Perlvim 发表于 2012-03-07 09:38
用make的大都是搞C语言的,但我现在确实在用Perl 重写Make ,所以想在这里问这个问题。我相信没有最厉害的, ...


一个目标没有相应的更新命令的目标,如果文件不存在,就要查找隐含更新规则。
一个目标相应的更新命令的目标,    如果文件不存在,就不查找隐含更新规则了。

上面这两句的前半句,我读了十来遍也没明白什么意思。。。。

论坛徽章:
0
3 [报告]
发表于 2012-03-07 10:06 |只看该作者
不好意思,写的不准确。
更新了帖子。
意思是有更新命令的规则和没有更新命令的规则,解析的结果是不同的

论坛徽章:
0
4 [报告]
发表于 2012-03-07 11:00 |只看该作者
我对隐晦规则基本没了解过,貌似是C里面用的多。
我试了试你的code,确实像你说的那样。但这也只是猜测。还是等待高手来解决吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP