Makefile:如何更改var的前缀?

时间:2015-12-12 13:43:42

标签: makefile

我有src,obj和inc dirs的项目文件夹。

我用obj-OBJS

声明var
SDIR = src
ODIR = obj

# I change /src/*.c to /obj/*.o
_OBJS = $(patsubst %.c, %.o, $(wildcard $(SDIR)/*.c))
# I need to change /src/*.o to /obj/*.o
OBJS = $(??? $ODIR ??? $_OBJS ???)

现在_OBJS - ./src/*.o,如何将OBJS /src/更改为/obj/

感谢。

2 个答案:

答案 0 :(得分:4)

这个怎么样(如果我理解正确的话):

SDIR = src
ODIR = obj

# I change /src/*.c to /obj/*.o
_OBJS = $(patsubst %.c, %.o, $(wildcard $(SDIR)/*.c))
# I need to change /src/*.o to /obj/*.o
_OBJS := $(subst $(SDIR), $(ODIR), $(_OBJS))

debug:
    @echo $(_OBJS)

输出/测试:

$ mkdir ./src/
$ touch ./src/a.c
$ touch ./src/b.c
$ touch ./src/c.c
$ ls ./src/
a.c  b.c  c.c
$ make debug
obj/a.o obj/b.o obj/c.o

答案 1 :(得分:0)

_OBJS = $(patsubst %.c, %.o, $(wildcard $(SDIR)/*.c))
_OBJS := $(notdir $(_OBJS)) 
OBJS = $(patsubst %,$(ODIR)/%,$(_OBJS))

但是,我认为,这是不好的方式