博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile文件里的shell语法
阅读量:2340 次
发布时间:2019-05-10

本文共 885 字,大约阅读时间需要 2 分钟。

在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙。下面总结了一些。

1:尽在Makefile文件的目标项冒号后的另起一行的代码才是shell代码。

eg:
xx = xx1         // 这里是makefile代码
yy:xx = xx2   // 这是是makefile代码,makefile允许变量赋值时,=号两边留空格
yy:
    xx=xx3 // 只有这里是shell代码 ,shell不允许‘=’号两边有空格哦。
有一个例外:
xx=$(shell 这里的代码也是shell代码)

2:Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递。所以,Makefile中的shell不管多长也要写在一行。

eg:
SUBDIR=src example

all:

    @for subdir in $(SUBDIR);       // 这里往下是一行shell

    do

        echo "building " $$subdir;

    done

 

if [ ${RELEASE} -eq 1 ]; then echo release; else echo debug; fi

3:Makefile中的变量以$开头, 所以,为了避免和shell的变量冲突,shell的变量以$$开头
eg1:从当前目录路径中提取出 /application 或 /base_class 之前的部分
PROJECT_ROOT_DIR = $(shell pwd | awk -F/application|/base_class {print $$1})
eg2:上例中$$subdir就是shell中的变量, 而$(SUBDIR)是Makefile的中的变量

文章摘要:

大概只要知道Makefile的人,都知道Makefile可以调用Shell脚本。但是在实际使用时,并不那么简单,一些模棱两可的地方可能会让你抓狂。你若不信,可以先看几个例子,想象一下这些这些例子会打印什么内容,记下你想象的结果,然后在计算机上运行这些例子,对照看一下。

转载地址:http://iizvb.baihongyu.com/

你可能感兴趣的文章
218. The Skyline Problem
查看>>
Java PAT (Basic Level) Practice 写出这个数
查看>>
Python PAT (Basic Level) Practice 1016 部分A+B
查看>>
Python PAT (Basic Level) Practice 1006 换个格式输出整数
查看>>
Python PAT (Basic Level) Practice 1009 说反话
查看>>
Python PAT (Basic Level) Practice 1011 A+B 和 C
查看>>
Python PAT (Basic Level) Practice 1017 A除以B
查看>>
Python PAT (Basic Level) Practice 1042 字符统计
查看>>
spring dubbo 2.7.3 zookeeper 项目构建
查看>>
spring dubbo 报错
查看>>
如何在非 bean 对象中注入 dubbo service
查看>>
前后端分离 ajax java跨域配置 spring boot 、 spring security
查看>>
java spring boot 拦截所有请求 显示请求路径 方法 ip 等
查看>>
java spring boot jackson 配置 null字符串为"" null数组为[]
查看>>
java redistemplate 配置序列化
查看>>
ArcEngine中加载和读取Style文件或.serverstyle文件
查看>>
递归算法及经典递归例子代码实现
查看>>
Surrounded Regions
查看>>
Palindrome Partitioning
查看>>
Palindrome Partitioning II
查看>>