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

标签 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 *~$

最佳答案

你可以这样做:

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/

相关文章:

java - 如何在 jnr ffi 中使用结构体和结构体

c - 扩充现有的 Makefile

c++ - 为 x86 系统编译 Readline(静态模式)

linux - buildroot for rpi,输入make后,返回error

c - 如何声明一个全局const变量并用C中的函数初始化它?

c - 查找数组中元素的最高频率(有时有效)

c++ - Make 期间的链接器错误

c++ - 无法运行 Makefile.am,我该怎么办?

c - 哪一部分导致浮点异常?

c - 丢弃来自 libcurl 的响应数据