//Root
Main.c
makefile
objs/ //I want to store the .o files here if possible.
refs/
- header1.h
- header1.c
- up to 8 headers
这是我的文件结构,我知道它不是最好的,但仅用于学校项目。头文件包含在Main.c中,
CC = gcc
INCLUDES = -I/refs
CFLAGS = -g $(INCLUDES)
ODIR = /objs
HLOC = /refs
main.o: main.c
$(CC) $(CFLAGS) main.c -o $(wildcard *.o)
main: main.o
$(CC) $(CFLAGS) main.c -o main
#clean:
#rm $(wildcard *.o)
我不确定如何实际执行此操作,这是我到目前为止所掌握的,但是我不确定如何进行操作或如何使其正常工作。我进行了广泛搜索,找不到答案。
谢谢!
答案 0 :(得分:0)
我假设顶部的“ Main.c”是拼写错误。我在没有测试的情况下将其放在一起,但至少应该足够好地传达了这个想法。如果您不了解you should read the manual,我在这里使用了一些GNU自动变量。
我创建了一个目标default
,该目标将先构建objs
,然后再构建bins
# default target, will be called if no target provided
default: objs bins
CC = gcc
INCLUDES = -I./refs
CFLAGS = -g $(INCLUDES)
ODIR = ./objs
HLOC = ./refs
OBJS = $(ODIR)/main.o
BINS = main
# target called from default
objs: $(OBJS)
# target to build your object files
$(ODIR)/%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
#target for your binary
main: $(ODIR)/main.o
$(CC) $< -g -o $@
#clean build artifacts
clean:
rm -f $(BINS)
rm -f $(OBJS)
请不要忘记,配方行上的选项卡是必需的。如果遇到问题,请粘贴错误信息!