我有一个具有以下结构的项目:
- main1.c
- main2.c
- main3.c
- lib.h
- lib.c
所有mains
都使用导入lib
。
如何编写一个
Makefile
创建3个可执行文件(每个主文件一个)?
我创建了一个Makefile来执行该操作,但是在调用make
命令(即make main1
,make main2
等)之后,您需要附加可执行文件的名称。 ,但是,如果我只尝试使用make
(不带参数),它只会产生第一个主(main1
)。
CC=gcc
CFLAGS=-g -O2 -Wall
LDFLAGS=-framework OpenCL
DEPS=lib.h
OBJS=main1.o main2.o main3.o
%.o: %.c $(DEPS)
$(CC) $(CFLAGS) -c -o $@ $<
main1: lib.o main1.o
$(CC) $(CFLAGS) -o $@ $^
main2: lib.o main2.o
$(CC) $(CFLAGS) -o $@ $^
main3: lib.o main3.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
clean:
rm -f *.o main1 main2 main3
生成文件
答案 0 :(得分:1)
https://www.gnu.org/software/make/manual/html_node/Goals.html
默认情况下,目标是makefile中的第一个目标(不计算在内) 以句号开头的目标)。因此,通常是makefile 编写,以便第一个目标是编译整个程序 或他们描述的程序。
所以只需将以下行添加为makefile中的第一个目标:
all: main1 main2 main3