目前我正在尝试在不链接的情况下编译子文件夹中的 .c 文件,并在 Makefile 中创建了一个简单的草稿。我想要做的是将 .o 文件放入 bin/目录,而不像我之前描述的那样进行链接。但是无法成功达到任何输出。
有示例 Makefile:
IDIR = test/inc
ODIR = test/src
CC = gcc
CFLAGS = -std=c99 -I$(IDIR)
OBJDIR = bin
.PHONY: clean
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)/%.o: $(ODIR)/*.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
@rm -rf $(OBJDIR)
如果您定义我遗漏了什么,那就太好了。
最佳答案
make 文件实际上需要请求创建所有目标文件。建议:
IDIR := test/inc
SDIR := test/src/
CC := gcc
CFLAGS := -Wall -Wextra -Wconversion -pedantic -std=c99 -I$(IDIR)
OBJDIR := bin/
SRCS := (wildcard:$(SDIR)*.c)
OBJS := ($(SRCS):.c=.o)
.PHONY: all clean
all: $(OBJDIR) $(OBJS)
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
@rm -rf $(OBJDIR)
运行上面的 makefile 使用:
make -f (your make file name) all
关于c - Makefile:没有链接问题的编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363787/