在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1547|回复: 7

[原创] makefile 相关,全路径+加嵌套

[复制链接]
发表于 2023-6-7 16:34:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
Mafile 嵌套
1. 配置DRC_V13a/run_drc 下面的Makefile =make bip 是底层运行的命令
2. 顶层makefile套用底层的makefile(目的:当多个包的时候看起来简洁)
    命令: make -C 底层Makefile的路径(DRC_V13a/run_drc)  底层的命令(bip)





Makefile 在用sed时候涉及全路径需要转义时:所有的/换成#就ok了,然后多命令分割用;号 ,
然后?= 表示外部可写入覆盖(变量可以外部输入有可以内部输入)
:make ip CNAME :=aa


Makefile 不能处理工具的环境变量setenv,可以用bash嵌套然后调用makefile。如run_lvs.sh 写成如下然后改成可执行:chmod +x run_lvs.sh

#!/usr/bin/tcsh
source sourceme_env
make lvs


转:

在Makefile中source脚本_makefile source_winson_c的博客-CSDN博客


4.png
3.png
2.png
1.png
 楼主| 发表于 2023-12-4 11:24:14 | 显示全部楼层
批量跑makefile的内容
Makefile
all:
        sed -e "s/topcell/$(CNAME)/g" calibre_cci.lvs > calibre_cci.lvs_new       
。。。

bash内容:color.sh
make all CNAME :=MS_XNR3D1ELVT_GF_2array_color
。。。。

执行批量: ./run_color.sh

 楼主| 发表于 2024-2-29 14:35:12 | 显示全部楼层
TOTAL Result Count = 1  (1)  
TOTAL Result Count = 0  (0)
vi 中逻辑通配符合正则 /TOTAL Result Count = [1-9]  把非零的报错搜索出来
 楼主| 发表于 2024-5-6 14:53:21 | 显示全部楼层
makefile 赋值运算符
1. =   少用,容易弄错。以程序结尾的复制为结果。
用"="对变量进行赋值时,解析该变量的时候,该变量的值等于最后一次赋值时的值,而不是当前位置时该变量的值。所以你看变量引用的值时不能只往前面看,还要往后面看。
2. :=  可以多用
用":=“来赋值的,则是就地直接解析,只用往前看即可,和我们在C语言里的”="逻辑上是一样的。
3. ?=  不知道批量并行运用是会不会被反复覆盖,带测试
该变量没有被赋值过则执行本条赋值语句,如果被赋值过则忽略本次赋值。
4. +=  追加赋值
对变量进行接续赋值,作用就是将本次的赋值追加到原来的赋值后面
 楼主| 发表于 2024-5-6 14:55:27 | 显示全部楼层
另外makefile可以批量运行脚本,只需要在用命令的时候
make -j +命令即可
(1)GNU make 支持同时执行多条命令。

我们可以在 make 时加选项 "-j" 或者 "--jobs" ,则同一时刻可以执行多条命令。如果选项 "-j" 之后存在一个整数,其含义是同一时刻可以执行的命令行的数目。这个数字被称为“job slots”。当 "-j" 选项后没有数字时,同一时间执行的命令数目没有要求。默认的job solts的值为1,表示make将串行执行规则的命令,即同一时刻只执行一条命令。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/oqqHuTu12345678/article/details/125627092
 楼主| 发表于 2024-5-6 14:56:36 | 显示全部楼层
vi编辑器中路径替换
vim命令:%s#/home/szs/stb/stsdk/A36/rpmbuild/BUILD#/home/yinjiabin/qt#g

解释:将/home/szs/stb/stsdk/A36/rpmbuild/BUILD替换为/home/yhinjiabin/qt
 楼主| 发表于 2024-10-8 17:24:01 | 显示全部楼层
makefile中查找已有文件的关键字,找到返回1,然后执行命令;找不到返回空,不执行make 命令;注意空格,这个是自动调用bash,(判断lvs产生的sp中是否有某种filler,防止有些工艺在抽取spf的时候是需要四周有filler的)
FILE =$(CNAME).sp
KEYWORD = FILL12BWP210H6P51


test:
        rm ${FILE}
        make lvs
        @if [ -z $(ttt) ]; then \
            tst="$(shell cat ${FILE} | grep ${KEYWORD} | head -n 1)"; \
            echo $${tst}; \
            if [[ -n $${tst} ]]; then \
                make suball; \
            else \
                echo "Can't find cellname!"; \
            fi; \
        fi
 楼主| 发表于 2024-10-8 17:32:27 | 显示全部楼层
;命令本身加@表示执行过程中不显示命令本身;makefile是顺序执行的命令,并且每句一个指令是不能传递的。
;-n表示非空
@if [ -z $(FILE) ]; then   ##检查变量ttt是否为空,如果为空,执行接下来的动作
tst="$(shell cat ${FILE} | grep ${KEYWORD} | head -n 1)   # 将执行cat和grep,搜索FILE中包含KEYWORD的行,并且只取第一行,然后将结果赋值给变量tst  ;请注意,Makefile中的命令必须以Tab字符开头,而不是空格。此外,if和fi用于Makefile的条件判断,而不是shell的if和fi。在Makefile中,变量的赋值和条件判断通常在目标规则之外进行,但也可以在同一目标规则中进行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 05:41 , Processed in 0.020313 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表