Makefile如何实现某些个文件的强制编译?
半字节 2011-07-20 08:13:05 RT:
一个工程 里面有很多文件 由makefile进行组织,通过make 编译了一次。现在想通过make命令传入C语言的一个宏定义,该宏定义会影响到某些。c的编译行为,但是由于已经make过一次,现在通过命令行 没有改变。c文件的时间戳,造成makefile不会重新编译,通过什么手段实现某些。c的强制编译呢?(具体是哪些。c是已经知道的)
比如La:如下是一部分makefile的内容
SOURCES=a.c b.c c.c d.c e.c f.c
SOUR=$(SOURCES:.c=.c.d)
OBJS=$(SOUR:.c.d=.o)
TARGET=a.out
.PHONY all force clean
all:$(TARGET)
$(TARGET):$(OBJS) $(SOUR) $(SOURCES) force
#commands
%.c.d:%.c
#commands
%.o:%.c.d
#commands
现在想使用make 的时候 里面的a.c e.c 重新编译,该怎么办?
1,通过make 的 -W参数 可是该参数不能传递给子层makefile
2,先makeclean 代价太大 整个工程重新编译要很长时间
3,先把要重新编译的。c touch一下 这个点子不错,但我想知道其他办法
4,在%.c.d:%.c后面加force 和第二个办法差不多了 所有。c都要新编
想知道有没有办法,通过makefile的规则在尽量不改动上述makefile的情况下实现特定。c的重新强制编译