我有src,obj和inc dirs的项目文件夹。
我用obj-OBJS
声明varSDIR = 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/
?
感谢。
答案 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))
但是,我认为,这是不好的方式