第十九篇 路径搜索的综合示例

 项目类型分析:

这是一种扁平的代码管理方式。makefile直接放到项目文件夹下面。

 

 

 

 示例工程:

源码的目录如下:

最终的makefile如下:

 1 .PHONY : all clean
 2 
 3 
 4 DIR_BUILD := build
 5 DIR_SRC := src
 6 DIR_INC := inc
 7 
 8 TYPE_INC := .h
 9 TYPE_SRC := .c
10 TYPE_OBJ := .o
11 
12 CC := gcc
13 LFLAGS :=
14 CFLAGS := -I $(DIR_INC)
15 ifeq ($(DEBUG),true)
16 CFLAGS += -g
17 endif
18 
19 MKDIR := mkdir
20 RM := rm -fr
21 
22 APP := $(DIR_BUILD)/app.out
23 HDRS := $(wildcard $(DIR_INC)/*$(TYPE_INC))
24 HDRS := $(notdir $(HDRS))
25 OBJS := $(wildcard $(DIR_SRC)/*$(TYPE_SRC))
26 OBJS := $(OBJS:$(TYPE_SRC)=$(TYPE_OBJ))
27 OBJS := $(patsubst $(DIR_SRC)/%, $(DIR_BUILD)/%, $(OBJS))
28 
29 vpath %$(TYPE_INC) $(DIR_INC)
30 vpath %$(TYPE_SRC) $(DIR_SRC)
31 
32 all : $(DIR_BUILD) $(APP)
33     @echo "Target File ==> $(APP)"
34     
35 $(DIR_BUILD) :
36     $(MKDIR) $@
37     
38 $(APP) : $(OBJS)
39     $(CC) $(LFLAGS) -o $@ $^
40     
41 $(DIR_BUILD)/%$(TYPE_OBJ) : %$(TYPE_SRC) $(HDRS)
42     $(CC) $(CFLAGS) -o $@ -c $<
43     
44 clean :
45     $(RM) $(DIR_BUILD)
46     
47     

第41行是模式规则。

这个makefile非常易于扩展到相同架构的项目。 

func.h如下:

1 #ifndef FUNC_H
2 #define FUNC_H
3 
4 void foo();
5 
6 #endif

func.c如下:

1 #include <stdio.h>
2 #include "func.h"
3 
4 void foo()
5 {
6     printf("void foo() : %s\n", "Hello, D.T.Software ...");
7 }

main.c如下:

1 #include <stdio.h>
2 #include "func.h"
3 
4 int main()
5 {
6     foo();
7     
8     return 0;
9 }    

 

 

 小结:

 

参考:

  狄泰软件学院视频教程

  makefile手册 

 

转载于:https://www.cnblogs.com/wanmeishenghuo/p/9735188.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值