makefile执行shell脚本

理工大嵌入式操作系统实验报告之Shell编程和Makefile文件 一、实验目的和要求 1 了解什么是脚本 2 掌握shell编程方法 3 掌握makefile的编写规则 二、实验内容和原理 1 编写一个Shell脚本,要求:显示当前目录的所有内容,并统计可执行文件(.sh)的数量,将统计结果输入到指定的文件当中; 2 编写一个Shell脚本,要求: 2.1 在屏幕上显示一行提示信息 2.2 读入一行命令 2.3 判断此命令是否为“exit”,若是则退出 2.4 ... 阅读详情

语法

$(shell pwd)

shell是函数名,后面的pwd是参数,返回的结果赋值给LDIR

CMD前面加@表示执行的时候不显示该命令,只显示命令的输出

当makefile的文件名不是makefile或者Makefile的时候,用make -f 文件名

注:只是定义变量的话,这个shell不会被执行,执行当这个变量被CMD执行的时候,这个shell才会被执行

[root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
LSS=$(shell ls)
test:
	@echo $(LDIR)
	@echo $(LSS)
[root@system CProgram]# make -f test.mk
/home/gaole/CProgram
test.mk
[root@system CProgram]# 
[root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
LSS=$(shell ls)
test:
	echo $(LDIR)
	echo $(LSS)
[root@system CProgram]# make -f test.mk
echo /home/gaole/CProgram
/home/gaole/CProgram
echo test.mk
test.mk

 @-中的-表示,即使执行错误,也要继续执行下面的CMD

root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
LSS=$(shell ls)
TMP=$(shell echo "test">test)
test:
	@echo $(LDIR)
	@echo $(LSS)
    @-echo $(TMP)
[root@system CProgram]# make -f test.mk
make: `test' is up to date.
[root@system CProgram]# ls
test  test.mk
[root@system CProgram]# cat test
test
[root@system CProgram]# 

 添加一个复杂shell脚本

加上.PHONY:test,执行test是伪目标

[root@system CProgram]# make -f test.mk test
make: `test' is up to date.
[root@system CProgram]# vim test.mk
[root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
LSS=$(shell ls)
TMP=$(shell echo "test">test)
OUT:=out
INIT=$(shell if [ ! -d $(OUT) ];then mkdir $(OUT);fi;)
test:
	@echo $(INIT)	
	@echo $(LDIR)
	@echo $(LSS)
	@-echo $(TMP)
.PHONY:test
[root@system CProgram]#
[root@system CProgram]# 
[root@system CProgram]# 
[root@system CProgram]# make -f test.mk
INIT
/home/gaole/CProgram
test test.mk

[root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
LSS=$(shell ls)
TMP=$(shell echo "test">test)
OUT:=out
INIT=$(shell if [ ! -d $(OUT) ];then mkdir $(OUT);fi;)
test:
	@echo $(INIT)	
	@echo $(LDIR)
	@echo $(LSS)
	@-echo $(TMP)
.PHONY:test
[root@system CProgram]# 
[root@system CProgram]# 
[root@system CProgram]# ls
test  test.mk
[root@system CProgram]# make -f test.mk

/home/gaole/CProgram
out test test.mk

[root@system CProgram]# ls
out  test  test.mk

 根据目录名称直接生成TARGET,需要嵌套使用两个函数

TARGET=$(notdir $(shell pwd))

用途取出 /home/leg/CProgram中的CProgram

[root@system CProgram]# cat test.mk
#test.mk
LDIR=$(shell pwd)
TARGET=$(notdir $(shell pwd))
LSS=$(shell ls)
TMP=$(shell echo "test">test)
OUT:=out
INIT=$(shell if [ ! -d $(OUT) ];then mkdir $(OUT);fi;)
test:
	@echo $(INIT)	
	@echo $(LDIR)
	@echo $(LSS)
	@-echo $(TMP)
	@echo $(TARGET)
.PHONY:test
[root@system CProgram]# make -f test.mk

/home/leg/CProgram
out test test.mk

CProgram
[root@system CProgram]# pwd
/home/leg/CProgram
[root@system CProgram]# 

shell系列】之查看shell脚本执行过程和makefile中调试手段 Date: 2018.10.16 前言     在编写shell脚本或者makefile脚本时,运行成功往往需要经过一番调试,定位问题所在需要一些调试方法,本文旨在讲述makefile脚本或者shell脚本中的几种调试方法。 阅读详情

相关推荐

Shell系列】$(shell pwd)和$(pwd)用法区别

Date: 2019-5-8【Tag:编程学习】 1、参考 $(shell pwd)和$(pwd)有什么区别 shell 基础 $(cd `dirname $0`;pwd) Linux常用命令简述–dirname与basename 2、$(shell pwd)和$(pwd)用法区别

CSDN明星博主,认证博客专家,视频、Matlab领域优质创作者。 3万+

Linux makefileshell文件相互调用实例详解

shell 文件内调用makefile文件: #!/bin/bash cd ctemplate-2.1 ./configure sudo make -f install cd ../ cd TemplateProcesser make 说明:./configure文件是shell脚本文件,即shell内调用shell文件是很容易的;TemplateProcesser目录内有Makefile文件,调用方式,直接:make  makefile文件内调用shell脚本文件: SHELL := /bin/bash test: @pwd cd ./TemplateProcesser && pw

Makefile中调用Shell的注意点

Makefile是一种用于构建和管理项目的工具,它可以自动化编译、链接和安装程序。在Makefile中,我们可以通过调用Shell命令来执行各种任务。本文将介绍在Makefile中调用Shell命令时需要注意的一些问题,并提供相应的源代码示例。通过遵循上述注意点,我们可以在Makefile中有效地调用Shell命令,并实现各种自动化任务。在命令行中,我们可以使用常见的Shell命令和语法,例如。,我们可以在Shell命令中引用这些变量。然后,在后续的命令中,我们可以使用。在上述示例中,我们使用。

HackCyberX的博客 651

Makefileshell

目录一 位置变量二 条件语句1 if else2 比较case循环语句 for while untilset -e一 Makefile 的规则二 自动推导1 使用变量(减少.o)2 C文件的推导3 头文件的推导三 变量和运算符1 变量2 运算符3 wildcard四 指定目标1 all的作用2 指定目标3 MAKECMDGOALS4 clean五 Makefile 的文件名七 shell八 引用其它的 Makefile九 make参数十 make十一 Scons 一 位置变量 $0:表明脚本的名字,比如执行

kessity的博客 2772

Makefileshell 脚本的区别与联系

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

devilzcl的博客 6530

Makefile执行shell脚本

在之前一次编写makfile时候,有看到相关的makefile中使用$$来引用变量,而且尝试后发现$$使用居然和${}有类似的功能。当时也没具体追究相关的用法,当然刚才所说的都是错误的观念 $$:在makefile中会被替换成一个$。     相关资料是这么描述的:makefile中变量在声明时需要赋予初值,在使用时,需要在使用的变量前加"$"符号,但是最好使用"()"或者"{}"将变

wsclinux的专栏 4万+

shell脚本执行方式和makefile常识

(最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令)        在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,

you_shou的博客 7201

Linux Makefileshell脚本区别

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

wangsh217的专栏 726

编写shell脚本实现执行Makefile高亮错误输出

一个很大工程当我们执行make去进行编译的时候,有时会出现warning;error:undefined情况,高亮这个条目方便我们更好的发现问题 将make产生的 标准错误输出 重定向到/tmp/111文件中,标准输出输出到终端 make.sh #!/bin/sh if [ -z "$1" ] then make 2>/tmp/11...

冰夫子的博客 802

Makefile中写shell脚本

如果你想在Makefile里面直接写bash脚本,你需要做一些特殊处理,而不能直接粘贴复制你的bash脚本。如果你在target行后直接粘贴复制,你会遇到两个问题: 命令行要以tab为缩进 $需要转义 如果你用gnu的make,你可以根据multi-line definition syntax来将你的脚本定义为一个变量,然后集合valuefunction来使用。 另外,你还需要告诉你的ma...

1万+

shellmakefile的关系

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

weixin_41230430的博客 447

Makefileshell脚本的不同

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

@奮 鬥@的专栏 1675

Makefileshell脚本区别

Makefileshell脚本区别 2018年04月16日⁄ 综合⁄ 共 878字 ⁄ 字号小中大⁄评论关闭 http://bbs.elecfans.com/jishu_1385448_1_1.html 在Makefile可以调用shell脚本,但是Makefileshell脚本是不同的。本文试着归纳一下Makefileshell脚本的不同。 1、 shell中所有引用以...

chenxiuli0810的专栏 483

Makefileshell脚本的区别

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

coderlang 2384

Makefileshell的区别:echo和@echo

原址:http://blog.chinaunix.net/uid-28728968-id-4457667.html 今天发现一个很基础,但我又确定的知识点,记录如下:         经常在Makefile的命令段发现@echo “print message”,和echo “print message”。         网上查了下是说echo加了@,命令会正常执行,但命令本身不回显(默认是

joshuaxx316的专栏 1833

Makefileshell脚本调用上的一些总结

大家都知道在Makefile可以调用shell脚本,但是Makefileshell脚本是不同的。本文试着介绍一下Makefileshell脚本的不同。 1、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。比如如下代码就是没有任何输出: VAR="Hello" echo "$VAR" all: ..... 以上代码任何时候都不会输出,没有在tar...

weixin_30387663的博客 313

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
上一篇: python几道题
下一篇: 嵌套执行make,多目标编译,多目标清理,多目标安装
johnmand
博客等级 码龄16年 25粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值