`
ipjmc
  • 浏览: 708046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

make笔记

阅读更多

Makefile中一个项由以下结构所组成:

target: dependency_files

    command

比如,有两个文件hello.c,hello.h,创建的目标体为hello.o,执行命令是gcc -c hello.c,Makefile就可以这样写:

hello.o: hello.c hello.h
    gcc -c hello.c

 

一个稍微复杂一点而的例子

sunq: kang.o yul.o
    gcc kang.o bar.o -o myprog
kang.o : kang.c kang.h head.h
    gcc -Wall -O -g -c kang.c -o kang.o
yul.o : bar.c head.h
    gcc -Wall -O -g -c yul.c -o yul.o
 

这里面有有3个目标体,分别为sunq,kang.o,yul.o,如果用户使用命令“make sunq”,则make找到目标体sunq开始执行。在执行时,如果有了target,并且他的修改时间比所依赖的文件更新的话,target是不会重新生成的。

 

Makefile变量:

Makefile有两种定义变量方式,一种是递归展开方式(在引用的时候替换,如果还包含其他变量则递归展开),另一种是简单展开方式(在定义的时候展开,且只展开一次)

递归展开的格式:VAR = var

简单展开的格式:VAR := var

make使用变量的方式$(VAR)

 

我们来使用变量来改造一下上面的例子

OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g

sunq: $(OBJS)
    $(CC) $(OBJS) -o myprog
kang.o : kang.c kang.h head.h
    $(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o : bar.c head.h
    $(CC) $(CFLAGS) -c yul.c -o yul.o

 

Makefile中常见的自动变量

变量 含义
$*  不包含扩展名的目标文件名称
$@  目标文件的完整名称
$<  第一个依赖文件的名称
$+  所有依赖的文件,以空格间隔
$^  所有不重复的依赖文件,一空格间隔

 

所以在上例中,Makefile的动作可以这样写

$(CC) $(CFLAGS) -c $< -o $@
 

 

 

 

分享到:
评论

相关推荐

    make笔记.zip

    这份"make笔记.zip"可能包含了关于如何使用`make`的详细教程或者参考材料。 `Make`的核心概念是`目标`和`依赖关系`。在`Makefile`中,每个规则定义了一个目标(通常是可执行文件或库),以及一组依赖文件(如源代码...

    MAKE 学习 笔记make

    ### MAKE 学习笔记知识点详解 #### 一、Make 的基本概念 - **Make 的作用**:`Make` 是一种自动化构建工具,主要用于管理程序的编译过程,它通过读取一个名为 `Makefile` 或 `makefile` 的文件来决定如何编译和...

    make学习笔记.rar

    这个“make学习笔记”压缩包包含了关于`make`和Makefile的详细资料,对于想要深入理解这个工具的用户来说非常有价值。 首先,让我们详细了解一下`make`。`make`是用于自动化构建项目的命令行工具,它能够跟踪源代码...

    blender2.79笔记makehuman -1.1.1笔记

    ### Blender 2.79与MakeHuman -1.1.1 使用笔记 #### 一、MakeHuman -1.1.1 软件介绍及应用 **MakeHuman** 是一款强大的开源人体建模软件,它可以帮助用户快速创建高质量的人体模型,并支持多种格式的导出。版本 **...

    Openwrt学习笔记-通用固件-make-menuconfig配置.pdf

    OpenWrt的学习笔记主要涵盖了对通用固件的make-menuconfig配置方法。 make-menuconfig是一个用于配置OpenWrt固件的工具,它提供了一个基于文本的菜单界面,允许用户选择需要编译进固件的组件和功能。在OpenWrt的...

    linux笔记笔记笔记笔记

    编写良好的Makefile可以大大提高开发效率,通过make命令即可实现快速构建和测试。 3. **Shell脚本**:Shell脚本是Linux系统中的批处理程序,使用Bash或其他Shell解释器执行。编写Shell脚本可以自动化日常任务,提高...

    工作中汇集的C语言知识, 最常用, 最典型的问题.doc

    8. **GNU Make笔记**: Makefile是构建项目的关键,它定义了源文件和目标文件之间的依赖关系。学习编写和使用Makefile,可以使构建过程自动化,提高开发效率。 9. **如何更好地了解C**: 深入理解C语言的关键在于实践...

    绿色版makecode

    【绿色版makecode】是一款专为iPad设计的实时投屏软件,它允许用户通过笔记本电脑将内容便捷地投影到大屏幕上。在IT领域,这样的工具对于教育、演示和协作环境非常有用,因为它使得观众可以清晰地看到iPad上的操作,...

    YC 创业课 2018 2019 中文笔记

    YC强调“Make something people want”(创造人们需要的东西),这要求创业者深入了解用户需求,提供具有价值的产品或服务。笔记中详细解读了如何通过调研、访谈等方式找到真实问题,并以此为基础构建解决方案。 二...

    angsd:用于分析NGS数据的程序

    angsd: 用于分析NGS数据的程序。... make笔记我已经切换到使用htslib来解析单次读取(以便进行CRAM读取,同时避免编写自己的CRAM解析器)。 我仍在使用自己的读取池。 因此,用户还应该下载并安装htslib。程序有论文

    Java中的集合框架Markdown全系列笔记

    内容概要:压缩包中含有Java中的集合框架Markdown全系列笔记,包括配图 能学到什么:在学习Java的朋友,可以从本文教程中学习到Java中最常用的集合框架,HashMap,ArrayList,HashSet等,同时又基于代码有一定层次的...

    程序员markdown笔记本

    VNote 的特性包括: 使用 语法高亮 而不是实时预览来提供舒适的编辑体验; 编辑时 实时原地预览图片链接; 编辑时,代码块支持语法高亮; 支持 Mermaid 流程图,MathJax 数学公式; 支持 Vim 模式;...

    Effective Modern C++学习笔记

    《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...

    qt 学习笔记 qt学习笔记

    ### Qt学习笔记知识点详解 #### 一、从Hello Qt开始 **知识点1:Qt程序的基本结构** - **头文件引入**: - 第1行和第2行代码中,`#include &lt;QApplication&gt;` 和 `#include &lt;QLabel&gt;` 是引入Qt中的两个类:`...

    [Make杂志].Make.Magazine.-.Volume.24.Oct.2010.pdf

    - **The Pulse™智能笔**:一种可以记录音频并关联笔记的智能笔,适合会议记录或创意笔记管理。 ### 知识点四:案例研究与访谈 - **“Rocket Men”报告**:作者Charles Platt采访了新兴私人太空行业的制造商们,...

    关于sklearn的笔记

    sklearn笔记 sklearn是Python中一个...在这篇笔记中,我们学习了如何使用make_blobs函数生成聚类数据集,并使用matplotlib库对数据进行可视化。此外,我们还学习了make_blobs函数的参数和sklearn.datasets模块的功能。

    Go 学习笔记 第四版 pdf

    根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...

    韦东山视频学习笔记

    韦东山视频学习笔记 - U-boot 学习笔记 韦东山老师的 Linux 视频学习笔记,涵盖了 U-boot 的学习笔记,本节笔记将详细介绍 U-boot 的生成、配置、编译和烧写过程。 U-boot 生成 U-boot 是一个开源的 Bootloader ...

    HP笔记本BIOS工具

    HP笔记本BIOS重刷工具 To use this system, select your supported hp probook/... use the 'Make All' button to create all posible keys. run the shotgun.bat file created to run through all the keys quickly.

Global site tag (gtag.js) - Google Analytics