【发布时间】:2016-10-18 11:50:17
【问题描述】:
我在 makefile 中尝试简单的事情,但无法使其工作。以下是与我的要求相关的示例文件:
生成文件:
OBJDIR=obj
dummy_build_folder := $(shell mkdir -p $(OBJDIR))
CC = gcc
SRCS = 1/print.c \
2/add.c
INCLUDE = -I "./1/" \
-I "./2/" \
OBJS = $(addprefix $(OBJDIR)/,$(patsubst %.c,%.o,$(notdir $(SRCS))))
$(OBJDIR)/%.o: %.c
@-if not exist $(OBJDIR) mkdir $(OBJDIR) 1>NUL 2>NUL
$(CC) -c $(INCLUDE) $< -o $@
all: $(OBJS)
@-if not exist $(OBJDIR) mkdir $(OBJDIR) 1>NUL 2>NUL
@echo $(OBJS)
.PHONY : clean
clean:
rm $(OBJS)
当我尝试运行相同的程序时,出现以下错误: "make: *** 没有规则来制作目标 'obj/print.o','all' 需要。停止。"
我也尝试使用“$(OBJDIR)/%.o: $(SRCS)”,但这里 $
gcc -c -I "./1/" -I "./2/" 1/print.c -o obj/print.o
gcc -c -I "./1/" -I "./2/" 1/print.c -o obj/add.o
我的目录结构是:
RootFolder:
1/print.c
2/add.c
3/xyz.c (Don't want to compile this file)
Makefile
另外,我想将所有 .o 文件保存在上述位置的不同文件夹 (./obj/*o) 中。
【问题讨论】:
-
格式化您的代码。