如果我愿意的话就会出现
touch output
,然后使用以下Makefile运行make
output/:
mkdir $@
我明白了
make: 'output' is up to date.
尽管output
是文件,因此output/
不是存在的目录。
为什么不对此抱怨或尝试为目标目录运行配方?
答案 0 :(得分:0)
这似乎是一个错误,该错误已在3.81版之后的某个时间修复,因为在较新的版本(如4.2.1版)中不会发生此错误:
mkdir output
mkdir: cannot create directory 'output': File exists
特别是,这意味着该错误仍然在Mac OS X上仍然存在,因为Apple并未从旧版本的GNU软件继续前进。
因此,出于可移植性的考虑,您需要在makefile中对此加以防范。
答案 1 :(得分:0)
据我了解(不是100%肯定),这并不是一个错误,它是一个功能。 make 3.81认为target
和target/
相同,而make 4.2.1认为它们是不同的目标。结果,make 3.81不会尝试重做output
,而make 4.2.1却会失败,因为文件output
阻止创建具有相同名称的目录。