如何编译更多* .c文件

时间:2018-10-27 15:51:11

标签: c makefile

我有两个*.ca.c两个func_a.c文件,而Makefile看起来像这样:

CC        = gcc
CFLAGS    = -Wpedantic -Wall -Wextra -std=c11
LIBS      = -pthread

A         = src/a.c
FUNC_A    = src/func_a.c
A_OBJ     = object/a.o
FUNC_A_O  = object/func_a.o

BINARY_A  = bin/a

all:            $(BINARY_A)

$(BINARY_A):    $(A_OBJ) $(FUNC_A_O)
    $(CC) -o    $(BINARY_A) $(A_OBJ) $(FUNC_A_O) $(CFLAGS) $(LIBS)

$(A_OBJ):       $(A)
    $(CC) -c    $(A) -o $(A_OBJ)

$(FUNC_A_O):    $(FUNC_A)
    $(CC) -c    $(FUNC_A) -o $(FUNC_A_O)

使用此Makefile,我编译那些C文件,并将它们发送到所需的目录。

bin/binary files
obj/object files

现在为b.cfunc.b.c做以下事情:

CC        = gcc
CFLAGS    = -Wpedantic -Wall -Wextra -std=c11
LIBS      = -pthread

A         = src/a.c
FUNC_A    = src/func_a.c
A_OBJ     = object/a.o
FUNC_A_O  = object/func_a.o

B         = src/b.c
FUNC_B    = src/func_b.c
b_OBJ     = object/b.o
FUNC_B_O  = object/func_b.o

BINARY_A  = bin/a
BINARY_B  = bin/b

all:            $(BINARY_A) $(BINARY_B)

$(BINARY_A):    $(A_OBJ) $(FUNC_A_O)
    $(CC) -o    $(BINARY_A) $(A_OBJ) $(FUNC_A_O) $(CFLAGS) $(LIBS)

$(BINARY_B):    $(B_OBJ) $(FUNC_B_O)
    $(CC) -o    $(BINARY_B) $(B_OBJ) $(FUNC_B_O) $(CFLAGS) $(LIBS)

$(A_OBJ):       $(A)
    $(CC) -c    $(A) -o $(A_OBJ)

$(B_OBJ):       $(B)
    $(CC) -c    $(B) -o $(B_OBJ)

$(FUNC_A_O):    $(FUNC_A)
    $(CC) -c    $(FUNC_A) -o $(FUNC_A_O)

$(FUNC_B_O):    $(FUNC_B)
    $(CC) -c    $(FUNC_B) -o $(FUNC_B_O)



.PHONY: clean
clean:

    rm -f $(BINARY_A)
    rm -f $(A_OBJ)
    rm -f $(FUNC_A_O)

    rm -f $(BINARY_B)
    rm -f $(B_OBJ)
    rm -f $(FUNC_B_O)

这是问题所在,make文件太大,如果我有更多*.c个文件,它将更大。 如何修改此代码,以便我可以编译所有这些*.c文件并将其发送到所需的目录?

0 个答案:

没有答案