我有一个目录,其中包含以下文件 “FS2” 文件:Makefile的问题,开始以 “#”
哎呀
- 这
- 是
我有具有以下内容的makefile。
Template:sh= ls ./FS2/*
#all: $(Template)
echo "Template is: $(Template)"
touch all
当我运行“clearmake -C太阳”和文件“都”不存在,我得到下面的输出:
"Template is: ./FS2/#ARGH# ./FS2/that ./FS2/this"
修改或者“这个”或“说”不导致“全部”重新生成。当使用“-d”进行调试时,“all”目标仅取决于目录“./FS2”,而不是目录中的三个文件。我确定,当它扩展“模板”时,“#”被视为评论的开始,并且该行的其余部分被忽略!
这个问题是由一个编辑器在杀死在以“#”开头的文件周围造成的。如果其中一个文件存在,则不会修改目录中的文件导致“全部”重新生成。
尽管我不想根据临时文件是否被修改来进行编译,并且将从“模板”变量中删除该文件,但我仍然很好奇如何让这个工作起作用确实希望将“#ARGH#”视为规则“全部”所依赖的文件名。这甚至有可能吗?
你在说你想编译依赖于特定编辑器留下的工件文件。你确定这是你想要做的吗?通常,make目标的唯一依赖项是构建它所需的源文件。你会冒险让你的代码不可预知地重新编译(意味着编辑感觉就像更新它的工件文件)。 – bta 2010-02-26 22:30:04
现在想象一下你的名字中间有一个空格的文件... – 2010-02-27 07:51:56
bta - 我编辑了这个问题,以反映这样一个事实,即我真的不希望编译依赖于临时工件编辑器,但想知道如何做到这一点,如果我有另一个名称中的“#”的文件,我确实希望目标依赖。谢谢! – 2010-02-28 14:22:09