使不同的可执行文件成为所有人使用的库

时间:2015-07-13 06:37:28

标签: c makefile

我有一个具有以下结构的项目:

- main1.c
- main2.c
- main3.c
- lib.h
- lib.c

所有mains都使用导入lib

  

如何编写一个Makefile创建3个可执行文件(每个主文件一个)?

第一种方法

我创建了一个Makefile来执行该操作,但是在调用make命令(即make main1make 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

生成文件

1 个答案:

答案 0 :(得分:1)

https://www.gnu.org/software/make/manual/html_node/Goals.html

  

默认情况下,目标是makefile中的第一个目标(不计算在内)   以句号开头的目标)。因此,通常是makefile   编写,以便第一个目标是编译整个程序   或他们描述的程序。

所以只需将以下行添加为makefile中的第一个目标:

all: main1 main2 main3