Makefile 简单通用实例

本贴最后更新于 1384 天前,其中的信息可能已经时异事殊

介绍

习惯用 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)
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    95 引用 • 149 回帖 • 347 关注
  • makefile
    4 引用 • 6 回帖
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1719 回帖 • 3 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    学习了 makefile 的规则之后,花了半天时间琢磨这个东西,然后优化精简了这个实例,留在这里以后能用到,也希望大家能用到