makefile embedded with shell

1. 反引号设置变量

var = `ls .`               等同于   var = $(shell ls .)

 

 

2.  不知道为何makefile好像不支持tcsh,只支持bsh嵌入shell脚本(注意属于命令,加tab)

  

 

3.  由于tcsh用的较多,现在补习一下sh的脚本知识。

 

  

4.  当sh嵌入makefile中时,请将sh中的变量$var 写成 $$var

 

 

5.  makefile的预编译指令

  

这些语句在编译时解释,而不是在运行是解释,因此 xxxx 根据上下文可以是命令,赋值, 或者目标依赖。总而言之可以是任何语句。

 

 6. 注意使用转义符号 / 

      一般变量中带有 #,% 等时需要转义。

 

7. 作为IC design 工程师一般常用的make 语法如下:

    1. ) .PHONY: all checkdir compile clean

         指定伪目标, 通常有 all , 检查目录并创建它, 编译源代码, 清除

 

    2.)  上面提到的预编译指令

          用于根据条件指定变量或者选择执行的命令

 

    3.) 嵌入shell

   

    4.)  列出带目录的源代码列表  (为何要带目录稍后解释)

             ASRC:=  ${SRC_DIR}/a.s /

                             ${SRC_DIR}/b.s

         或者

             ASRC:= $(wildcard ${SRC_DIR}/*.s)

   

    5. )  通过源代码列表得到目的代码列表

           AOBJ:= $(patsubst  %.s, %.o, $(ASRC))

 

    6.)   应用静态编译

 

           

      只有应用静态模式这样才能使得 每个 .o 和每个 .s 一一 对应起来。编译的.o 就放在 ${SRC_DIR} 目录下    

   

 8.  为何要带目录呢?

      这样可以很方便的使用静态编译,而且方便wildcard 的展开。代价是编译的.o只能放在 ${SRC_DIR} 下

      如果我们不采用如此做法那么处理起来相对麻烦些:例如我们要吧 src 目录下的.c 编译成.o文件,并放到 obj目录下

    

9. 为何要用make?

    1) 很适合处理编译,提供了相应的函数

    2) 运行速度快,不需要重复编译

    3) 适合clone仿真(即多核运行)

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值