linux-makefile中以for循环实现多目标,(两子目录makefile)

问题描述

makefile中以for循环实现多目标,(两子目录makefile)
子目录./test1/test9 ./test1/test6含有两个正确的makefile
1   SUBDIRS:=./test1/test9 ./test1/test6
 2  subdirs:
 3  for dir in $(SUBDIRS);do
 4          $(MAKE) -C $$dir;
 5          done
make之后:
    for dir in ./test1/test9 ./test1/test6;do
/bin/sh: 1: Syntax error: end of file unexpected
makea:3: recipe for target 'subdirs' failed
make: *** [subdirs] Error 2

解决方案

SUBDIRS:=./test1/test9 ./test1/test6
当在for循环中取SUBDIRS变量时,会把“./test1/test9 ./test1/test6”当成一个完整的变量,
make -C $$dir -> make -C ./test1/test9 ./test1/test6

所以在for循环使用的时候需要将SUBDIRS变量拆分一下:
for dir in echo $(SUBDIRS) | cut -d'<空格>' -f 1-;
do
make -C $$dir;
done

解决方案二:

makefile for bcc

时间: 2024-11-30 11:06:34

linux-makefile中以for循环实现多目标,(两子目录makefile)的相关文章

Linux编程中的while循环问题

我们先要理解while循环的意义,使用while循环的目的就是多次循环! while循环是根据while关键字后面指定的条件决定是否退出的循环的. 如果你希望执行一次命令就退出,那么无需用while循环,使用while就表示你需要多次循环,好了,我猜测下,你的问题是希望true的条件下,如何退出循环吧? 如果是的话,那么大概有如下几个方法. 1.while后的条件不是为true永远为真,而是指定一个条件,那么条件不满足就退出了. 例子如下: i=0 while ((i<10)) do echo

makefile 中 $@ $^ %&lt; 使用【转】

  转自:http://blog.csdn.net/kesaihao862/article/details/7332528 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c)

《编译与反编译技术》—第1章1.8节UNIX/Linux环境中的make和makefile

本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.8节UNIX/Linux环境中的make和makefile ,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问"华章计算机"公众号查看. 1.8 UNIX/Linux环境中的make和makefile 在UNIX或Linux环境中,make是一个非常重要和经常使用的编译工具.无论是自己进行项目开发还是安装应用软件,都会经常用到make或make install.使用make工具,可以将大型的开发项目分解成

linux 系统中Autoconf/Automake的使用

作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用"./configure","make","make instal&

Linux系统中的usr目录有哪些

Linux 系统文件结构中,有这么一个神奇的目录那就是usr.之前一直都没有去关注过它,反正程序已经安装在里面,我也不知道有什么用就放在哪里了,后来 fedora 要简化整个文件系统体系,这才看到才想到它的存在,usr 到底是什么的缩写呢,它又是怎么来的呢?这里小编要给你们讲述的是Linux系统中的usr目录,下面也列举了usr目录下一些重要子目录所包含文件的功能,有需要的网友可以参考学习下. 1.usr 是 unix system resources 的缩写; 2.usr 是 user 的缩写

详解Linux系统中的install命令的用法

  用法:install [选项]... [-T] 源文件 目标文件 或:install [选项]... 源文件... 目录 或:install [选项]... -t 目录 源文件... 或:install [选项]... -d 目录... 此install 将文件(通常仅是编译后的文件)复制到您所选择的目的位置. 如果您希望在GNU/Linux 操作系统上下载并安装一个即时可用的软件包, 您应当使用诸如yum(1) 和apt-get(1) 的软件包管理器. 在前三种形式中,将源文件复制到目标文

Linux系统中与中文显示相关的一些编码设置方法

  对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文.另外,由于大部分主要Linux发行版都是以英语为主体的,英文界面的系统和应用程序不管在界面的美观程度和稳定程度上都比中文的略好一些,各种奇怪的BUG也要少一些.因此,很多稍微有英语基础的Linux用户都宁愿使用英文界面的系统.但是,矛盾又突现出来:在英文系统下,如何才能正常显示和输入中文呢?有没有两全其美的方案呢?因此,笔者开

编译器-关于linux kernel中的container_of宏的困惑

问题描述 关于linux kernel中的container_of宏的困惑 #define container_of(ptr, type, member) ({ const typeof( ((type *)0)->member ) *__mptr = (ptr); (type *)( (char *)__mptr - offsetof(type,member) );}) 最近在看linux kernel中的链表操作, 看到了如上这个宏, 其实表达的意思很简单, 但是他要用一个__mptr来指向

linux内核中访问共享资源

访问共享资源的代码区域称为临界区,临时以某种互斥机制加以保护.中断屏蔽.原子操作 自旋锁和信号量是Linux设备驱动中可采用的互斥途径. 在单CPU范围内避免竞态的一种简单方法是在进入临界区之前屏蔽系统的中断. CPU一般都具备屏蔽中断和打开中断的功能. 中断屏蔽的使用方法: Local_irq_disable();  //屏蔽中断--->和它不同的是local_irq_save除了禁止中断操作以外还可以保存目前CPU的中断位信息 ...... 临界区 ...... Local_irq_enab