当前位置: 首页 > news >正文

Makefile与Shell脚本

Makefile与Shell脚本

分类: linux编程相关 shell编程 makefile相关   1665人阅读  评论(1)  收藏  举报
makefile shell 脚本 path 正则表达式 工作
   最近由于工作需要完善Makefile系统,并对Makefile调用shell脚本有了更深的认识。大家都知道在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着介绍一下Makefile和shell脚本的不同。

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

VAR="Hello"
echo "$VAR"

all:
   .....

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

VAR="Hello"

all:
    echo "$VAR"
    .....

以上代码,在make all的时候将会执行echo命令。

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

SUBDIR=src example
all:
    @for subdir in $(SUBDIR); \
    do\
        echo "building "; \
    done

上述可以看出for循环中每行都是以”; \”结尾的。

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

PATH="/data/"

all:
    echo ${PATH}
    echo $$PATH

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

     以上三点的是Makefile调用shell应该注意的地方,写Makefile一定要注意。

相关文章:

  • 用SkinSB美化滚动条控件
  • Windows下Linux开发环境设置(一)--TFTP服务器设置和NFS服务器设置
  • Linux下ffmpeg添加 x265
  • 磁引导机器人系统申请了专利,聊以慰籍
  • 关于TCP的可靠性
  • 如何成长为技术合伙人?
  • 发现一个超酷的FireFox2.0插件,纪念一下
  • UPYUN 用到的技术
  • 祝贺三八节日 “IT女杰风云榜”专题
  • 如何快速成长
  • 我的新浪博客地址升级了
  • 服务器开发
  • 清朝最后一次科举试题 看看你能考中状元吗
  • 说说Linux线程的栈空间
  • linux中使用pthread_kill函数测试线程是否存活的例子
  • hexo+github搭建个人博客
  • 《剑指offer》分解让复杂问题更简单
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • ECS应用管理最佳实践
  • ES6之路之模块详解
  • gitlab-ci配置详解(一)
  • HTML5新特性总结
  • PHP CLI应用的调试原理
  • 排序算法学习笔记
  • 深入浅出Node.js
  • 使用common-codec进行md5加密
  • 微信开放平台全网发布【失败】的几点排查方法
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #if #elif #endif
  • (1)(1.13) SiK无线电高级配置(六)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (javascript)再说document.body.scrollTop的使用问题
  • (js)循环条件满足时终止循环
  • (二)c52学习之旅-简单了解单片机
  • (附源码)计算机毕业设计ssm电影分享网站
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (转) ns2/nam与nam实现相关的文件
  • (转)树状数组
  • .cn根服务器被攻击之后
  • .NET分布式缓存Memcached从入门到实战
  • .NET开发者必备的11款免费工具
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net中调用windows performance记录性能信息
  • @RequestMapping处理请求异常
  • [ 蓝桥杯Web真题 ]-布局切换
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [<事务专题>]
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [Android Pro] Notification的使用
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [C++] new和delete