GNU Makefile学习专题(二) | 第二个实例

  • 想实现效果:
    • 项目具有一个源码目录(即:所有源码都位于 src 目录下,当然 src 也是有层次目录结构的了)
    • 项目编译过后,在 src 同层次创建一个 obj 目录,其子目录结构与 src 子目录结构完全相同,不同的是这个目录下放的是编译过后的 .o 文件(绝对代码洁癖,另外就是 java 的 UT 习惯了。。。。)
    • 编译过后的可执行文件放在与 src 同层次的目录下, 当然一个较大的项目生成的可执行文件绝对不止一个,这个问题日后讨论
  • 简单的源码结构还是和专题(一)中相同,见这儿:点击这儿
  • 要求: src 下面不可以直接是文件,源文件必须放在 src 下的某个目录下
  • 直接贴 Makefile 的源码,主要是一些函数的使用,没什么复杂的内容,常用函数的总结帖我有时间再写:
    • CC              = gcc
      CFLAGS          = -Wall
      LDFLAGS         = -lm
      INCLUDES        = -I src/include
      
      SRC_DIR         = src/main src/tools
      
      OBJ_DIR         = obj
      OBJ_PATH        = $(addprefix $(OBJ_DIR)/, $(subst src/,, $(SRC_DIR)))
      
      SRC_FILES       = $(foreach dir, $(SRC_DIR), $(wildcard $(dir)/*.c))
      
      OBJS            = $(subst src,obj, $(patsubst %.c,%.o, $(SRC_FILES)))
      
      MAKE_OBJ_DIR    := $(shell mkdir -p $(OBJ_PATH))
      
      EXECUTABLE      = test_makefile
      
      all             : $(OBJS)
              $(CC) $(LDFLAGS) $(INCLUDES) $(OBJS) -o $(EXECUTABLE)
      
      $(OBJS)         : $(SRC_FILES)
              $(CC) $(CFLAGS) $(INCLUDES) -c $(subst obj,src, $(patsubst %.o,%.c, $@)) -o $@
      
      clean           :
              -rm -rf ./obj
              -rm -rf $(EXECUTABLE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值