Makefile模式规则失败?
使用GNU-make时,我的Makefile有一些模式规则:
%.o:%.c
gcc $< -o:$@
这个规则由我添加。
但是当我确实犯了它时会给出一个错误,说没有规则来制作目标%.o并且不会构建目标。
有时,还有其他行为。当我说第一次做时它没有构建目标(它给出错误说没有规则来制作目标),但是当我说立即再次制作时,它确实构建正确。
因此,当我明确指定每个源文件时,它会首次自行构建目标。
编辑:我在Centos上使用GNU-make(v6.3我猜,不确定)。这可能是一些权限/用户ID /组ID问题吗?
有什么指示可以了解可能发生的事情和解决方案吗?
谢谢,
-广告。
没有找到相关结果
已邀请:
5 个回复
担每棱绰
这可以。 Make不考虑模式规则,因为您没有要求它做任何事情,并且makefile中没有默认目标。让我们让它做一些可能使用模式规则的东西。
预期。
不存在,因此不考虑模式规则。让我们再试一次。
(然后关于主要缺失的一些错误)。 就个人而言,我非常不喜欢这些后备规则。我更喜欢明确地列出目标。就像是
为您提供目标特定模式规则。这些是完全不同的(参见手册)。 [哦,这个模式在这个愚蠢的例子中没有任何优势。]
括宠
周围留出空格。另外,
在输出文件名之前不带冒号;只需使用
。
痰降锭骂奸
确保在gcc之前的第二行有一个制表符而不是空格。花了几个小时才弄明白。 正如其他人所指出的那样,在-o标志之后也没有':'。
扇献隙
娠侈脚惮顽
它告诉:
因为它不是目标。这是一个规则。 如果您的另一个目标需要.o文件,它将起作用。