Makefile简介

Makefile是一种特殊格式的文件,被make工具使用来管理软件的构建过程。Makefile定义了一组规则和依赖关系,告诉make如何编译和链接程序。

Makefile语句

TARGET: PREREQUISTS
COMMAND

Makefile的语句由上述三部分组成,例如target: hello prerequists: hello.c command: gcc hello.c -o hello

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

Makefile引用

$@指代当前TARGET

Makefile变量

  • 递归展开方式变量

    这一类型的定义由=进行定义,此时是严格的文本替换。例如:

    xs = mh
    ns = $(xs)
    all:;
    echo $(ns)

    在执行语句时,首先,echo $(ns)会替换为echo $(xs)然后才会替换成echo mh。这就是递归的进行替换。

  • 直接展开方式变量

    这一类型的定义由:=进行定义,在变量定义时就展开。

    ns := $(xs)
    xs = mh

    此时由于ns是直接展开的,如果xs定义在后面,此时ns会直接变为空,无法完成对xs变量的引用。

Makefile伪目标

伪目标使用.PHONY进行声明,其后的值如share,此语句表明share并不是真正的目标,只执行后续的命令,而不生成目标。

.PHONY: shared
shared: # 不生成shared目标文件
ls

Makefile实例

CC = gcc
APP = webserver
SRCS-y := reactor.c webserver.c websocket.c
all: shared .PHONY: shared build shared: build/$(APP)-shared
ln -sf $(APP)-shared build/$(APP) build/$(APP)-shared: $(SRCS-y) | build
$(CC) $(SRCS-y) -o $@ build:
@mkdir -p $@ # @不打印命令

注意

  1. Makefilevscode中使用时可能会报错"make: *** No rule to make target '@mkdir', needed by 'build'. Stop."

    原因:vscode中的tab可能默认为四个空格

    解法:将tab修改为非四个空格

GNU make-Makefile文件简介的更多相关文章

  1. GNU的makefile文件编写说明

    这篇文章讲的相当详细,转来收藏: linux下Makefile学习 MAC

  2. 面试题----makefile文件的作用

    make工具和makefile文件 make工具和makefile文件简介 make命令和makefile文件的结合提供了一个在项目管理领域十分强大的工具.它不仅常被用于控制源代码的编译和链接,而且还 ...

  3. 简介make命令和makefile文件

    一.为什么要用到 make 命令和 makefile 文件 在 Linux 下编写一个程序,每次编译都需要在命令行一行一行的敲命令.如果是一个很小的程序还好说,命令不怎的复杂,编译速度也挺快,但是对于 ...

  4. 例解 autoconf 和 automake 生成 Makefile 文件

    本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...

  5. 使用autoconf和automake生成Makefile文件(转)

    Makefile好难写 曾经也总结了一篇关于Makefile的文章<make和makefile的简单学习>.但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦. ...

  6. 【C编程基础】make命令和makefile文件

    1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile). ...

  7. 利用 autoconf 和 automake 生成 Makefile 文件

    一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...

  8. linux下使用automake工具自动生成makefile文件

    linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...

  9. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  10. 使用automake等命令自动生成Makefile文件 (转载)

    使用automake等命令自动生成Makefile文件   Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...

随机推荐

  1. hive第一课:# hive-3.1.2分布式搭建文档

    hive-3.1.2分布式搭建文档 谷歌浏览器下载网址:Google Chrome – Download the fast, secure browser from Google 华为云镜像站:htt ...

  2. HTTP协议 学习:0-有关概念

    HTTP协议 学习:0-有关概念 背景 实际上,HHTP协议是一种比较简单的协议,它的本质上是一个文本协议,在实际开发中,我们重点关注解析对方发来的内容的过程(字符串匹配). 参考资料: HTTP H ...

  3. Ubuntu下的NVIDIA显卡【安装与卸载、CUDA安装】

    @ 目录 0. 显卡GPU的基础知识 1. 显卡安装 Optional: 卸载显卡(当你要换显卡的时候) 2. 安装CUDA 碎碎念:主要是把显卡相关的整合出来,基础知识后面再放上来 显卡安装后可以有 ...

  4. 为什么说这款99元国产ARM工业平台,具有“划时代”意义

    随着近年来进口处理器涨价不断,大家会发现市面上已很少见到99元的ARM工业核心板出售. 为满足客户对低成本.高性能的需求,创龙科技推出基于全志T113-i国产ARM工业处理器的"划时代&qu ...

  5. ARM+DSP异构多核——全志T113-i+玄铁HiFi4核心板规格书

    核心板简介 创龙科技SOM-TLT113是一款基于全志科技T113-i双核ARM Cortex-A7 + 玄铁C906 RISC-V + HiFi4 DSP异构多核处理器设计的全国产工业核心板,ARM ...

  6. MSSQL慢查询查询与统计

    查询MSSQL慢查询: SELECT TOP 20 TEXT AS 'SQL Statement',last_execution_time AS 'Last Execution Time' ,(tot ...

  7. 如何在 Windows 使用 Podman Desktop 取代 Docker Desktop

    Podman Desktop 是 Docker Desktop 的免费替代品,是本地开发使用的另一个绝佳选择.它提供了类似的功能集,同时保持完全开源,让您避免使用 Docker 产品的许可问题.在本文 ...

  8. 典型性相关分析在SPSS中的实现

    典型性相关分析是研究两组变量(每组变量中都可能有多个指标)之间相关关系的一种多元统计方法.它能够揭示出两组变量之间的内在联系. 本文着重模型在spss中的应用,通过一道例题解释各个指标的意义.详细推导 ...

  9. Python数据分析方法与技巧

    背景介绍 数据分析是数据科学领域的核心技能之一,它涉及到数据的收集.清洗.处理.分析和可视化. 数据分析是指通过收集.清洗.处理.分析和可视化数据来发现隐藏的模式.趋势和关系的过程. 数据分析是数据科 ...

  10. Spring Cloud 比较

    Spring Cloud 比较 一.简介 1.SpringCloud:一套微服务架构下的一站式解决方案,理念就是解决我们在微服务架构中遇到的任何问题: 2.SpringCloudAlibaba:阿里实 ...