Makefile和shell脚本的不同

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。
1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下:
Makefile
PATH="/data/"
SUBPATH=$(PATH)

Shell
PATH="/data/"
SUBPATH=${PATH}

2、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。如果你需要调用shell中的变量(或者正则表达式中锚定句位$),都需要加两个$符号($$)。实例如下:

PATH="/data/"

all:
    echo ${PATH}
    echo $$PATH例子中的第一个${PATH}引用的是Makefile中的变量,而不是shell中的PATH环境变量,后者引用的事Shell中的PATH环境变量。


3、通配符区别
shell 中通配符*表示所有的字符
Makefile 中通配符%表示所有的字符

4、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。比如如下代码就是没有任何输出:

VAR="Hello"
echo "$VAR"

all:
   .....以上代码任何时候都不会输出,没有在target内,如果上述代码改为如下:

VAR="Hello"

all:
    echo "$VAR"
    .....以上代码,在make all的时候将会执行echo命令。

5、在Makefile中执行shell命令,一行创建一个进程来执行。这也是为什么很多Makefile中有很多行的末尾都是“;  \”,以此来保证代码是一行而不是多行,这样Makefile可以在一个进程中执行,例如:

SUBDIR=src example
all:
    @for subdir in $(SUBDIR); \
    do\
        echo "building "; \
    done上述可以看出for循环中每行都是以”; \”结尾的。

6、获取当前目录

PATH=`pwd` 注意是``,不是''

Makefile中的变量shell变量 我们在写makefile时 多多少少会用到shell脚本, 对于变量的在shell中的使用有一些要注意的细节。让我们从一个简单的makefile来看看。 注意makefile中一定要有一个目标,且一定要有一个终极目标,若想要有多个目标应该设立一个伪目标。如下:all: hello hello2 hello3hello: hello.c gcc .... hello2: hello2.c 阅读详情

相关推荐

异步FIFO模块的RTL代码文件、Testbench 代码文件、tclmakefile脚本文件

博文【异步FIFO的设计功能验证】的源码,包含异步FIFO模块的RTL代码文件、Testbench 代码文件、tclmakefile脚本文件

语法对比:Csh Makefile Perl Tcl Matlab C SV

差异点: 变量类型 数组 列表 哈希 指针/引用 变量使用 赋值引用 set= $ 结构分句 {} (); 结构控制 if else case switch for while 文件 o...

niceshotgoodball的博客 870

AMBA 3 APB接口设计的RTL、Test bench、makefiletcl文件

博客【Verilog实战】AMBA 3 APB接口设计的RTL、Test bench、makefiletcl文件

Makefile shell 脚本的区别与联系

一、什么是 Makefile? 描述了整个工程的编译、链接规则。当源码文件比较多的时候就不适合通过输入 gcc 命令来编译,Makefile 文件描述了编译哪些源码文件、如何编译,每次需要编译工程时只需要使用这个文件就行了。 注意:Makefile 中空出来的部分用 Tab 键,不能用空格;注释用 “#”,不能用 “//”。 使用 Makefile 的方法:直接在命令行中输入 “make”,m...

devilzcl的博客 6530

shellMakefile区别及总结

Makefileshell脚本区别 http://blog.csdn.net/absurd/article/details/636418 1.通配符不一样 shell:* Makefile:% 2.引用变量不一样 shell:$var 或者${var} Makefile:$(var) 3.Makefile的target里面才执行shell脚本或者用函...

wangsh217的专栏 2063

数字IC中的Makefile简明教程

芯片设计中的Makefile精简介绍 Makefile可以做什么? Makefile可以根据指定的依赖规则文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。 Makefile的基本格式 目标:依赖 命令 目标是要生成的结果,依赖是生成结果需要的源文件上一步骤的结果,命令是当目标不存在或者依赖更新时执行的命令。注意命令前必须用tab来缩进,不可以用空格。 示例一: simv: tb.sv dut...

yh13572438258的博客 7097

Makefileshell脚本的区别

2、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。echo $$PATH例子中的第一个${PATH}引用的是Makefile中的变量,而不是shell中的PATH环境变量,后者引用的事Shell中的PATH环境变量。可以调用shell脚本,但是Makefileshell脚本不同的。4、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。

嵌入式C 568

shellmakefile的关系

而make工具则负责解析Makefile,并根据其中的规则命令来调用shell执行构建任务。Makefile的设计允许它调用任意的shell命令或脚本,这使得Makefile非常灵活强大。Makefile中的命令是在shell环境中执行的。这意味着,当make工具调用shell来执行Makefile中的命令时,这些命令会按照shell的语法规则被执行。/bin/bash(或其他shell解释器路径)开头的,这意味着当执行该脚本时,系统会调用指定的shell解释器来解析执行脚本中的命令。

weixin_41230430的博客 447

MakefileShell脚本

最近由于工作需要完善Makefile系统,并对Makefile调用shell脚本有了更深的认识。大家都知道在Makefile可以调用shell脚本,但是Makefileshell脚本不同的。本文试着介绍一下Makefileshell脚本不同。 1、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。比如如下代码就是没有任何输出: VAR="Hello"

haomcu的专栏 1947

Shell 脚本makefile中,赋值时 等号两边该不该有空格

Makefile 中,赋值时 等号两边是可以有空格的,这并不会引起错误,但为了统一风格,许多开发者还是习惯不加空格(即 CROSS_COMPILE=/opt/…),这只是风格上的偏好。Shell 脚本 需要严格按照语法解析命令变量,而 Makefile 是用来描述构建规则的工具,它在处理变量时并不要求严格的语法格式,所以它允许在 = 两边加空格。VAR=value VAR = value 都是合法的写法。在 Shell 脚本 中,赋值时 等号两边不能有空格,否则会报错。

jjjxxxhhh123的博客 440

shell脚本Makefile区别.docx

shell脚本Makefile区别.docx

makefile简单介绍

由于才刚接触Makefile不久,这里只能做出一些简单的介绍。 通常,我们建立一个工程,里面存放许多源文件,这时候,就有一些问题产生了。到底哪些文件先编译,哪些需要重编译,哪些根本就不需要编译(假设存在不需要编译的文件,当然,通常在一个工程中是不会出现这种状况的),甚至一些更加复杂的操作,而我们的Makefile就规定了一系列的规则来使这些操作准确无误地进行。其实我们也可以把Makefile

simenen的专栏 627

makefile if 使用

https://blog.csdn.net/liuzhuchen/article/details/51776820 1、在目标外使用if #这个ifeq else endif,在target 外部,关键字前边一定要有tab ifeq ("aaa","bbb") #内容前可以有空格,如果是tab时,解析为命令 #变量前可以多个空格 LIBS= -laaa else #+ech...

晴树的专栏 1万+

Makefileshell脚本区别

Makefile可以调用shell脚本,但是Makefileshell脚本不同的。本文试着归纳一下Makefileshell脚本不同。 1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下: Makefile PATH="/data/" SUBPATH=$(PATH) Shell PATH="/data/" S

fguknow的专栏 537

makefile shell文件相互调用

makefile shell文件相互调用 shell 文件内调用makefile文件:   #!/bin/bash cd ctemplate-2.1 ./configure sudo make -f install cd ../ cd TemplateProcesser make 说明:./configure文件是shell脚本文件,即shell内调用

u012554768的专栏 4754

shell中的变量Makefile中的变量

一、Makefile中引用shell中的变量 test.sh #!/bin/bash set -e export DIR=/home/yuyin.wei make print Makefile print: echo $(DIR) 执行test.sh,结果如下: echo /home/yuyin.wei /home/yuyin.wei 如果此时Makefile中使用echo $$(DIR),反而会出错,如下: echo $(DIR) /bin/sh: DIR

吾生也有涯,而知也无涯 990

Linux系统shell脚本快速上手(新人入门)

shell是Linux系统中开机自动加载的一个特殊程序,它将用户输入的指令,转换成Linux内核可以识别的语言,从而让内核执行调用硬件。本文通过一简单实例,说明shell脚本的结构、编写以及运行方式,帮助读者快速上手shell脚本

qq_39872252的博客 597

C语言、Makefileshell中添加打印调试信息(详细)总结及实例

本文主要总结了在C语言、Makefileshell中添加打印调试信息的方式,通过实例方便读者进行理解。

Luckiers的博客 3501
上一篇: 智能指针
下一篇: C++中智能指针的设计和使用
helmsgao
博客等级 码龄16年 304粉丝 281原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值