嵌套makefile(下)

目录

1、前言

2、编写C语言程序

           2.1 main.c

        2.2 fun.c

        2.3 list.h

        2.4:移动文件

            2.5 :编写总控makefile

                   2.5.1

          2.6:src子makefile

        2.7:obj子makefile

      2.8:运行

3.总结


1、前言

        我们在上一篇文章中,理解到嵌套makefile的含义以及简单的语法,我们今天拿一个实例来演示一下makefile在工程中的应用。

2、编写C语言程序

        在上一篇中,我们建立了list.h   main.c  fun.c三个文件,接下来我们简单编写一下,

           2.1 main.c

                

#include "../include/list.h"
int main()
{
    fun();
    return 0;
}

        2.2 fun.c

#include "../include/list.h"
void fun(void)
{
    printf("hello");
    printf("hello");
    printf("hello");
    printf("hello");
    printf("hello");
}

        2.3 list.h

                

#ifndef _LIST_H
#define _LIST_H
//头文件、宏定义、结构体、枚举、函数声明一般都放在库文件中
#include <stdio.h>
void fun(void);
#endif

        2.4:移动文件

                  我们的文件都是在src文件夹下编写的,我们需要把库文件放置在include文件夹中。

mv list.h ../include/

            2.5 :编写总控makefile

                 在编写总控makefile的时候,我们有一些点要注意

                   2.5.1

                                我们要在总makefile中把我们的变量定义好,那么定义好的变量要传给子makefile中,怎么传呢?我们用export语句将我们所有的变量传给子makefile,这样我们就不用在子makefile中再次定义了,那么总makefile怎么控制子makefile的呢?我们用举一个例子

        例如,我们有一个子目录叫 subdir,这个目录下有个 Makefile 文件,来指明了这个目录下 文件的编译规则。那么我们总控的 Makefile 可以这样书写:

 cd subdir && $(MAKE)

其等价于:

$(MAKE) -C subdir

定义$(MAKE)宏变量的意思是,也许我们的 make 需要一些参数,所以定义成一个变量比 较利于维护。这两个例子的意思都是先进入“subdir”目录,然后执行 make 命令,同学可以任选其一。

//回到上一级中

//定义变量
OBJS:=main.o fun.o
CC:=gcc
CFLGAS:=-c -Wall
Myapp:=main //要生成的目标文件

//传文件
export OBJS CC CFLGAS


ALL:
    make -C src//进入src中执行
    make -C obj//进入obj中执行

          2.6:src子makefile

        

ALL:$(OBJS)
    mv *.o ../obj/
main.o:main.c
    $(CC) $(CFLGAS) $< -o $@
fun.o:fun.c
    $(CC) $(CFLGAS) $< -o $@

        2.7:obj子makefile

ALL:$(Myapp)
    mv $< ../bin/
$(Myapp):$(OBJS)
    $(CC) $^ -o $@

      2.8:运行

             我们在有总makefile的目录下,make一下,就可以生成可执行文件了,然后,我们运行一下可执行文件就可以了。

3.总结

        我在这篇用的C语言程序比较简单,只是为了大家理解而写的一些简单程序,大家可以熟悉一下流程,好了今天的分享到这里就结束了,接下来我将会写IO的一些知识点,如果大家要想学好接下来的数据结构,还是把我的IO看完,再看我接下来讲得数据结构,我们从顺序表开始出发

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一部分、概述...............................................................................................................................6 第二部分、关于程序的编译和链接...............................................................................................6 第三部分、 Makefile 介绍 ............................................................................................................7 一、 Makefile的规则 ..............................................................................................................7 二、一个示例...........................................................................................................................8 三、 make是如何工作的........................................................................................................9 四、 makefile中使用变量....................................................................................................10 五、让make自动推导..........................................................................................................11 六、另类风格的makefile....................................................................................................12 七、清空目标文件的规则.....................................................................................................13 第四部分、 Makefile 总述 ..........................................................................................................13 一、 Makefile里有什么? ....................................................................................................13 1、显式规则。 ..............................................................................................................14 2、隐晦规则。 ..............................................................................................................14 3、变量的定义。 ..........................................................................................................14 4、文件指示。 ..............................................................................................................14 5、注释。 ......................................................................................................................14 二、 Makefile的文件名 ........................................................................................................15 三、引用其它的Makefile ....................................................................................................15 四、环境变量 MAKEFILES................................................................................................16 五、 make的工作方式..........................................................................................................16 第五部分、书写规则.....................................................................................................................17 一、规则举例.........................................................................................................................17 二、规则的语法.....................................................................................................................17 三、在规则中使用通配符.....................................................................................................18 四、文件搜寻.........................................................................................................................19 五、伪目标.............................................................................................................................20 六、多目标.............................................................................................................................22 七、静态模式.........................................................................................................................22 八、自动生成依赖性.............................................................................................................24 第六部分 书写命令.......................................................................................................................25 一、显示命令.........................................................................................................................26 二、命令执行.........................................................................................................................26 三、命令出错.........................................................................................................................27 四、嵌套执行make..............................................................................................................28 五、定义命令包.....................................................................................................................30 第七部分 使用变量.......................................................................................................................30 一、变量的基础.....................................................................................................................31 二、变量中的变量.................................................................................................................32 三、变量高级用法.................................................................................................................34 四、追加变量值.....................................................................................................................37 五、 override 指示符 ..........................................................................................................37 六、多行变量.........................................................................................................................38 第 2 页共 78 页 2005 年 10 月 14 日整理:祝冬华跟我一起写 Makefile 作者:陈皓 七、环境变量.........................................................................................................................38 八、目标变量.........................................................................................................................39 九、模式变量.........................................................................................................................40 第八部分 使用条件判断...............................................................................................................40 一、示例.................................................................................................................................40 二、语法.................................................................................................................................42 第九部分 使用函数.......................................................................................................................43 一、函数的调用语法.............................................................................................................44 二、字符串处理函数.............................................................................................................44 1、 subst .......................................................................................................................44 2、 patsubst.................................................................................................................45 3、 strip .........................................................................................................................45 4、 findstring ...............................................................................................................46 5、 filter.........................................................................................................................46 6、 filter-out.................................................................................................................46 7、 sort ..........................................................................................................................47 8、 word ........................................................................................................................47 9、 wordlist ..................................................................................................................47 10、 words....................................................................................................................47 11、 firstword..............................................................................................................48 12、字符串函数实例....................................................................................................48 三、文件名操作函数.............................................................................................................48 1、 dir.............................................................................................................................48 2、 notdir ......................................................................................................................48 3、 suffix .......................................................................................................................49 4、 basename..............................................................................................................49 5、 addsuffix................................................................................................................49 6、 addprefix ...............................................................................................................49 7、 join...........................................................................................................................50 四、 foreach 函数................................................................................................................50 五、 if 函数 ............................................................................................................................50 六、 call函数..........................................................................................................................51 七、 origin函数 .....................................................................................................................51 “undefined” .................................................................................................................52 “default”.......................................................................................................................52 “file”...............................................................................................................................52 “command line”.........................................................................................................52 “override” ....................................................................................................................52 “automatic”.................................................................................................................52 八、 shell函数 .......................................................................................................................53 九、控制make的函数..........................................................................................................53 1、 error ........................................................................................................................53 2、 warning ..................................................................................................................54 第十部分 make 的运行..............................................................................................................54 第 3 页共 78 页 2005 年 10 月 14 日整理:祝冬华跟我一起写 Makefile 作者:陈皓 一、 make的退出码..............................................................................................................54 二、指定Makefile ................................................................................................................54 三、指定目标.........................................................................................................................55 “all” ................................................................................................................................56 “clean” ..........................................................................................................................56 “install” .........................................................................................................................56 “print” ...........................................................................................................................56 “tar” ...............................................................................................................................56 “dist”..............................................................................................................................56 “TAGS” ..........................................................................................................................56 “check”和“test” ..........................................................................................................56 四、检查规则.........................................................................................................................57 五、 make的参数..................................................................................................................57 第十一部分 隐含规则...................................................................................................................61 一、使用隐含规则.................................................................................................................61 二、隐含规则一览.................................................................................................................62 1、编译C程序的隐含规则 ...........................................................................................63 2、编译C++程序的隐含规则.....................................................................................63 3、编译Pascal程序的隐含规则..................................................................................63 4、编译Fortran/Ratfor程序的隐含规则..................................................................63 5、预处理Fortran/Ratfor程序的隐含规则..............................................................63 6、编译Modula-2 程序的隐含规则...........................................................................63 7、汇编和汇编预处理的隐含规则 ..............................................................................64 8、链接Object文件的隐含规则 .................................................................................64 9、 Yacc C程序时的隐含规则 .....................................................................................64 10、 Lex C程序时的隐含规则.....................................................................................64 11、 Lex Ratfor程序时的隐含规则 ...........................................................................65 12、从C程序、 Yacc文件或Lex文件创建Lint库的隐含规则 ..................................65 三、隐含规则使用的变量.....................................................................................................65 1、关于命令的变量。 ..................................................................................................65 2、关于命令参数的变量 ..............................................................................................66 四、隐含规则链.....................................................................................................................67 五、定义模式规则.................................................................................................................68 1、模式规则介绍 ..........................................................................................................68 2、模式规则示例 ..........................................................................................................69 3、自动化变量 ..............................................................................................................70 4、模式的匹配 ..............................................................................................................72 5、重载内建隐含规则 ..................................................................................................72 六、老式风格的"后缀规则" .................................................................................................73 七、隐含规则搜索算法.........................................................................................................74 第十二部分 使用make更新函数库文件....................................................................................75 一、函数库文件的成员.........................................................................................................75 二、函数库成员的隐含规则.................................................................................................75 三、函数库文件的后缀规则.................................................................................................76 第 4 页共 78 页 2005 年 10 月 14 日整理:祝冬华跟我一起写 Makefile 作者:陈皓 四、注意事项.........................................................................................................................76 第十三部分 后序...........................................................................................................................77

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习C语言之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值