【发布时间】:2016-01-03 05:22:51
【问题描述】:
我想跟进this question and its answers... 现在我可以构建两个不同的可执行文件,我想根据变量在不同的目录中构建可执行文件。
我想从这样的地方出发:
EXEDIR = bin/release/
EXE = $(EXEDIR)AmiModRadio
SOURCES = $(wildcard *.c)
OBJECTSDIR = o/release/
OBJECTS = $(addprefix $(OBJECTSDIR), $(SOURCES:.c=.o))
CC = vbcc:bin/vc
LD = vbcc:bin/vc
release : $(EXE)
$(OBJECTS) : $(OBJECTSDIR)%.o : %.c
$(CC) $(shell vbccprefs) -c $< -o $@
$(EXE) : $(OBJECTS)
$(LD) $(shell vbccprefs) -o $(EXE) $(OBJECTS)
类似于:
EXE = $(EXEDIR)AmiModRadio
SOURCES = $(wildcard *.c)
OBJECTS = $(addprefix $(OBJECTSDIR), $(SOURCES:.c=.o))
CC = vbcc:bin/vc
LD = vbcc:bin/vc
release : EXEDIR = bin/release/
release : OBJECTSDIR = o/release/
release : $(EXE)
release : EXEDIR = bin/debug/
release : OBJECTSDIR = o/debug/
release : $(EXE)
$(OBJECTS) : $(OBJECTSDIR)%.o : %.c
$(CC) $(shell vbccprefs) -c $< -o $@
$(EXE) : $(OBJECTS)
$(LD) $(shell vbccprefs) -o $(EXE) $(OBJECTS)
上面的最后一个makefile不起作用,因为据我了解,在规则release和debug中设置变量EXEDIR和OBJECTSDIR为时已晚。
那么,我在这里遗漏了一些简单的东西吗?有没有办法让release 和debug 这两条规则使用相同的规则,但在两组不同的目录中生成文件,包括作为主要目标的可执行文件?
【问题讨论】: