介绍
习惯用 ide 的我们可能忘了 C/C++ 或者其他程序编译的原理,可以像我一样试试用 gcc 来编译,链接程序;但是程序变大,代码文件变多,这个过程每次修改都需要执行,makefile 就是用来记录下你的编译链接规则,每次重新编译就只需要重新执行 makefile。在我认为,对项目源码的管理也是程序员的一项重要能力。
通用实例
# 目录配置
DIR=$(shell pwd)
SRC_DIR=$(DIR)/src
INCLUDE_DIR=$(DIR)/include
DEBUG_DIR=$(DIR)/debug
OBJS=$(DEBUG_DIR)/*.o
# 命令设置
CC=gcc
CFLAGS=-g -c
PROJNAME=build
MODULE=main init_socket http_session get_time util
# 链接
$(PROJNAME):$(foreach i,$(MODULE),$(i).o)
$(CC) -o $(DEBUG_DIR)/$(PROJNAME) $(OBJS)
# 循环编译所有模块
define funC
$(1).o:$(INCLUDE_DIR)/*.h
$(CC) $(CFLAGS) -o $(DEBUG_DIR)/$(1).o $(SRC_DIR)/$(1).c
endef
$(foreach j,$(MODULE),$(eval $(call funC,$(j))))
# 定义make clean命令对应操作
clean:
rm $(DEBUG_DIR)/*.o $(DEBUG_DIR)/$(PROJNAME)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于