http://www.linuxidc.com/Linux/2012-04/59093.htm

大家经常编写和使用Makefile, Makefile里面也经常用到shell, 但对其中一些需要注意的地方未必
会去留意, 这里列出几个来, 不知是否对大家有用。
1. 注意Makefile的变量和shell变量, 看如下示例:
 
  DIRS = src bin lib
   all:
    @for i in $(DIRS); /
     do /
         echo " " $$i; /
     done
   大家看出来了吗? DIRS是makefile变量,i是shell变量, 使用的时候:
   $(DIRS), $$i区别还是蛮大的。
 
2. 每一行的shell都是在独立的进程中运行的,如果你在上一行为一个变量赋值, 不要指望它在下一行有效, 比如:
  @CROSS_COMPILE=mipsel-linux-
   @echo $(CROSS_COMPILE)
 
   打印的结果不会是mipsel-linux-,如果你想得到所要的结果, 就并为一条shell吧:
   @CROSS_COMPILE=mipsel-linux- ; echo @echo $(CROSS_COMPILE)
    或者:
   @CROSS_COMPILE=mipsel-linux- ; /
    echo @echo$(CROSS_COMPILE)
  
3. shell一定要写在target里, 否则你写了也白费劲, 是会被make忽略掉的.
   @echo "Building all..."
   all:
    @echo "Begin"
   只会打印Begin.

Makefile里调用Shell注意点的更多相关文章

  1. [转] Makefile中调用Shell

    1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的.比如如下代码就是没有任何输出: VAR="Hello" echo "$(VAR)&q ...

  2. Makefile调用shell应该注意的地方

    转载:http://blog.csdn.net/ninlei0115/article/details/9732191 1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出 ...

  3. makefile中的shell语法

    在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...

  4. python 调用shell命令三种方法

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...

  5. ant调用shell命令(Ubuntu)

    ant中调用Makefile,使用shell中的make命令 <?xml version="1.0" encoding="utf-8" ?> < ...

  6. Java 调用 shell 脚本详解

    这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...

  7. makefile中的shell编程注意点

    参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是 ...

  8. linux下怎样用c语言调用shell命令

    C程序调用shell脚本共同拥有三种法子 :system().popen().exec系列数call_exec1.c , system() 不用你自己去产生进程.它已经封装了,直接增加自己的命令 ex ...

  9. Ant 调用 Shell/CMD 命令

    Ant中调用Makefile,使用shell中的make命令 <?xml version="1.0" encoding="utf-8" ?> < ...

随机推荐

  1. 用试探回溯法解决N皇后问题

    学校数据结构的课程实验之一. 数据结构:(其实只用了一个二维数组) 算法:深度优先搜索,试探回溯 需求分析: 设计一个在控制台窗口运行的“n皇后问题”解决方案生成器,要求实现以下功能: 由n*n个方块 ...

  2. [Leetcode][Python]56: Merge Intervals

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 56: Merge Intervalshttps://oj.leetcode. ...

  3. Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 2

    Prepare 10g Database for OGG Create GGS and GGS_MON Database Users SQL> create tablespace ggs_tbs ...

  4. webpack配合vue.js实现完整的单页面demo

    本篇文章主要是我在开发前研究了webpack+vue.js的单页面应用,因为需要用到node的npm,所以确保安装了node,建议官网安装最新的稳定版本.并且在项目中需要加载一些npm包,由于npm的 ...

  5. Java中的内存泄漏问题

    今天来谈谈Java语言中的内存泄漏问题,可能还有人不知道什么是内存泄漏,先来说下内存泄漏的概念. 内存泄漏:比较正式的说法是,不再使用的对象,却不能被Java垃圾回收机回收.用我的话来说,就是Java ...

  6. php常用的操作

    一.  php配置 1.禁止一些函数disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passt ...

  7. java学习之Date的使用

    Date使用,主要要注意将日期格式化,否则返回的是系统默认的格式.请自己查阅API文档. import java.util.*; import java.text.*; public class Te ...

  8. javascript 事件代理及应用

    事件代理又叫事件委托在前端发开中实际是非常有用的,说事件代理之前我们先说说事件绑定 <p onclick="test()" ></p> function t ...

  9. MySTLString

    auto ptr = new char[10]; delete ptr; delete 一个动态数组不能直接delete ptr, 应该是 delete[] ptr;

  10. MYSQL SET类型字段的SQL查询某个字段保函某个值的查询

    1.column set('hot','crazy','smart')  //column字段(set属性)三个值 2.select * from table where FIND_IN_SET('h ...