【发布时间】:2015-03-05 13:34:30
【问题描述】:
我正在使用 mingw32-make 并尝试创建一个简单的规则来运行 windres 以包含 Windows 可执行文件的图标。
该结构由a.c 中的一个简单C 程序、一个仅包含以下行的a.rs 文件组成:
1 ICON "a.ico"
..图标文件本身,以及 Makefile。
Makefile:
CC = gcc
all: a
%.rc.o: %.rc
windres $< $@
a: a.o a.rc.o
我得到的输出:
>make
gcc -c -o a.o a.c
make: Circular a.rc <- a.rc.o dependency dropped.
windres a.rc a.rc.o
gcc a.o a.rc.o -o a
输出文件都创建正确,但我不知道如何编写 .rc->.rc.o 规则来摆脱循环依赖消息。据我所知,它将其解释为suffix rule,其中%.rc.o 表示该规则旨在从%.o 创建%.rc,因此对%.rc 的依赖是循环的...
我可以使用.rco 代替.rc.o,它不会产生此错误,但如果可能,我更喜欢将其保留在复合扩展中。
有没有什么方法可以创建一个模式规则,以 .ext1.ext2 排序的扩展名提供输出,而不会将其解释为后缀规则?
【问题讨论】:
-
您遇到了 make 对
.o的隐含规则之一(我不确定是哪一个)最简单的解决方案就是将%.rc.o更改为在结尾如%.rc.out。另一种解决方案是删除所有隐式规则并自己编写规则。 -
似乎...我最终在显示如何绕过规则的答案之前使用 .rs.obj ,并且 .res 始终是一个选项(技术上是正确的,但更少我清楚)
标签: makefile gnu-make circular-dependency