【编程语言学习】GNU make (3)实战
本文最后更新于 47 天前,其中的信息可能已经有所发展或是发生改变。

有如下项目目录结构

└─C_build_demo
    ├─inc
    └─src

可以使用这样的万能模板来进行编译

CC := gcc
SRCS := $(wildcard ./src/*.c)
TARGETS := $(patsubst %.c, %.o, $(SRCS))
CFLAGS := -g -Wall 
INC_DIR = -I ./inc/                     #链接自定义头文件路径
LIB := -lm                              #链接库 
LDFLAGS = -L./lib -Wl,-rpath=./lib      #自定义动态库路径,并设置程序允许时从这个路径读取动态库
EXEC_BIN := a.out                       #编译产物,可执行文件
EXEC_LIB := liba.so                     #编译产物,动态库

all: $(EXEC_BIN) $(EXEC_LIB)
	rm $(TARGETS)

$(EXEC_BIN): $(TARGETS)
	$(CC) $^ -o $@ $(LDFLAGS) $(LIB)
	
$(EXEC_LIB): $(TARGETS)
	$(CC) -shared -fPIC -o $@ $(TARGETS)

$(TARGETS): %.o: %.c
	$(CC) -c $(CFLAGS) $(INC_DIR) $< -o $@

.PHONY: clean
clean:
	rm $(EXEC_BIN) $(EXEC_LIB)
上一篇
下一篇