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


     项目类型分析:

    这是一种扁平的代码管理方式。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
    ", "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手册 

  • 相关阅读:
    线性方程与行列式
    几何变换
    复数
    矢量
    DRBD 基础及安装
    OpenSSL自签发CA证书chrome浏览器安全访问
    DRBD+Keepalived高可用
    mysql 直接拷贝data 目录下文件还原数据的实现
    Form表单disabled神坑:无法传值到后端
    设置鼠标样式为不可用
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9735188.html
Copyright © 2020-2023  润新知