gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:37:05 25 4
gpt4 key购买 nike

我正在尝试更改我的 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 *~$

最佳答案

你可以这样做:

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

关于c - 如何更改我的 makefile 以重定向 .o,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com