对 makefile 中 .ONESHELL的学习体会

简介:

需要声明的是 gnu make 的 3.81 中尚未包含 .ONESHELL 功能。

3.82 中方有此功能。

如下的例子是在安装了 gnu make 3.82 后验证成功的:

上例子:

复制代码
#.NOTPARALLEL:
#.ONESHELL:
.SECONDEXPANSION:

.PHONY: all

all: a
        
a:
    t1=abc;export t1
    @echo $$t1;
复制代码

此时,make 的结果显示:

t1=abc; export t1

而把 .ONESHELL 前面的注释去掉后,

复制代码

#.NOTPARALLEL: .ONESHELL: .SECONDEXPANSION: .PHONY: all all: a a: t1
=abc;export t1 @echo $$t1;
复制代码

此时,make 的结果显示:

t1=abc; export t1

abc

也就是说,没有加 .ONESHELL 的时候,片段中的各行 shell 彼此独立。

加了 .ONESHELL 后,各行shell 可以看作一行 shell。

结束





本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/09/25/2701669.html,如需转载请自行联系原作者

目录
相关文章
makefile 变量的替换,嵌套引用,命令行变量
makefile 变量的替换,嵌套引用,命令行变量
305 1
|
运维 关系型数据库 MySQL
《mysql慢查询追踪:动态设置与优化,一步到位解决数据库性能瓶颈》
【8月更文挑战第16天】在数据库运维中,监控与优化MySQL慢查询对提升性能至关重要。本文通过电商平台案例演示如何动态调整慢查询配置及分析过程。首先检查`long_query_time`和`slow_query_log`状态,若未开启,则需设置如`long_query_time = 2`并启动日志记录。在高并发时段收集慢查询日志后,分析发现无索引导致效率低下的查询,通过`explain`确认全表扫描,最终创建复合索引解决问题。此方法有助于快速定位并解决性能瓶颈。
724 1
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
1179 2
|
数据采集 监控 安全
中间件数据传输数据校验
中间件数据传输校验确保数据完整性、准确性和安全,涉及完整性、准确性和安全校验。常见校验方法包括奇偶校验、CRC、校验和、哈希函数和数字签名。实践中,数据在发送前和接收后均需校验,错误处理需及时,校验策略应可配置。安全上,加密保护敏感数据,防止重放攻击。监控和日志记录有助于追踪问题,提升系统可靠性。
225 1
SEL4 for aarch64 on qemu编译运行
SEL4 for aarch64 on qemu编译运行
429 0
|
安全 Ubuntu 测试技术
l4re Getting started
l4re Getting started
619 0
|
开发工具 芯片 Perl
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置
2900 0
|
安全 项目管理 开发工具
一文知悉RISC-V可信执行环境:Keystone
一文知悉RISC-V可信执行环境:Keystone
910 0
|
Linux Windows
makefile 结构规则,依赖,伪目标
makefile 结构规则,依赖,伪目标
382 0
|
Linux
【Linux命令200例】cksum用于计算文件的校验和
cksum命令是一个用于计算文件的校验和的Linux命令。它通过对文件内容进行CRC(循环冗余校验)计算来生成校验和值。校验和值可以用于验证文件在传输过程中是否被修改或损坏。
891 0