如何更改我的makefile以重定向.o

时间:2018-01-06 14:39:16

标签: c makefile

我正在尝试更改我的makefile以将.o重定向到lib文件夹(并将.c放在src文件夹中)。我还希望可执行文件与makefile处于同一级别。

至于.h,我不知道该把它放在哪里!

CC = gcc
    CFLAGS = -std=c11 -Wpedantic -Wall -Wextra -Wconversion -Werror -fPIC -pthread -D_XOPEN_SOURCE=500 -fstack-protector
LDLIBS = -lrt
RM = rm -f
ARFLAGS = rs

all: server client info_proc info_user

server: server.o header.o
    $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)

server.o: server.c header.h
    gcc -c server.c

client: client.o header.o
    $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)

client.o: client.c header.h

header.o: header.c header.h
    gcc -c header.c

info_proc: info_proc.o

info_proc.o: info_proc.c
    gcc -c info_proc.c

info_user: info_user.o

info_user.o: info_user.c
    gcc -c info_user.c

rmpipe:
    $(RM) question_pipe

clean:
    $(RM) server client info_proc info_user question_pipe *.o *~$

1 个答案:

答案 0 :(得分:0)

你可以这样做:

all: main

main: lib/a.o lib/b.o lib/main.o
    $(CC) $(CFLAGS) -o $@ $^

lib/a.o: a.c
    $(CC) $(CFLAGS) -c -o $@ $<

lib/b.o: b.c
    $(CC) $(CFLAGS) -c -o $@ $<

lib/main.o: main.c
    $(CC) $(CFLAGS) -c -o $@ $<

或者您可以使用其中一个版本来代替编写自己的Makefile 工具:

从长远来看,

比自编更容易维护 Makefile