04.makefile(下)

◊基本框架:

a)         Make常用内嵌函数

b)         多级目录Makefile的编写

4.1Make常用内嵌函数

函数调用的一般形式:$(function  arguments(参数))

  1)        $(wildcard PATTERN) :   匹配当前目录下指定模式的文件

        例子:src=$(wildcard  *.c)

  2)        模式替换函数

        例子:$(src:.c=.o)

  3)        Shell函数:           执行shell命令

        例子:$(shell  ls  –d  */)

4.2多级目录Makefile的编写

4.2.1多级目录,只生成一个可执行文件的Makefile的编写

  一个比较好的例子(值得参考):

  .PHONY:  all  clean

  CC = gcc

  CFLAGS =  -Wall  –g

  BIN = main

  SUBDIRS = $(shell ls  –d  */)

  SUBSRC = $(shell find $(SUBDIRS)  -name  ‘*.c’)

  SUBOBJ = $(SUBSRC: .c=.o)

  ROOTSRC = $(wildcard *.c)

  ROOTOBJ = $(ROOTSRC:.c=.o)

  OBJS = $(ROOTOBJ)  $(SUBOBJ)

  all:$(BIN)

  $(BIN):$(OBJS)

   $(CC) $(CFLAGS) $^ -o [email protected]

  %.o:%.c

  $(CC) $(CFLAGS) –c $< -o [email protected]

  clean:

  rm –f $(BIN) $(OBJS)

4.2.2 多级目录,生成多个可执行文件的Makefile的编写:

      $(CURDIR) :表示当前文件夹。

      难度较大,先简单了解下。

4.3Makefile编写总结:

  1)一个目录下,一个可执行文件的编写;

  2)一个目录下,多个可执行文件的编写;

  3)多级目录下,一个可执行文件的编写;

  4)多级目录下,多个可执行文件的编写。

  前三种Makefile文件的编写自己应该掌握。

时间: 2024-11-08 21:05:37

04.makefile(下)的相关文章

Ubuntu 16.04系统下CUDA8.0配置Caffe教程

由于最近安装了Ubuntu 16.04,本文教程的特点是不需要降级gcc的版本,毕竟cuda8.0已经支持gcc5以上(默认不支持,实际支持). 本文是在参考caffe官网教程以及http://www.linuxidc.com/Linux/2015-07/120449.htm结合自己总结经验而来,对此表示感谢. Ubuntu 14.04安装Nvidia CUDA7.5并搭建Python Theano深度学习开发环境http://www.linuxidc.com/Linux/2015-09/123

Caffe在Ubuntu 14.04 64bit 下的最快安装

最近因为各种原因,装过不少次Caffe,安装过程很多坑,为节省新手的时间,特此总结整个安装流程. 关于Ubuntu 版本的选择,建议用14.04这个比较稳定的版本,但是千万不要用麒麟版!!!比原版体验要差很多!!! Caffe的安装过程,基本采纳 这篇文章 然后稍作改动,跳过大坑. Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明  http://www.linuxidc.com/Linux/2015-04/116444.htm 1. 安装开发依赖包 sudo

Kubuntu 14.04 环境下安装:flash 火狐插件,搜狗输入法,更改分辨率1366x768

本文档的pdf文件网盘地址:http://pan.baidu.com/s/1hqgQId2 Kubuntu 14.04 环境下安装:flash 火狐插件,搜狗输入法,更改分辨率 1366x768http://www.kubuntu.org/ 系统安装后没有中文输入法,可以联网的话,建议使用:百度在线输入法(见下链接)Ubuntu安装Fcitx(小企鹅五笔输入法)http://www.cnblogs.com/conanboa/archive/2010/03/04/1678402.html 安装目标

ubuntu server 14.04 LTS下搭建LAMP环境之最详细笔记之一U盘安装双系统

前言: 一直在WIN上使用PHP,不喜欢用WAMP,每次都是手动在windows配置环境,偶尔有一次装了小红帽玩了两天,感觉不是很习惯就换了回来,过了没几天见讨论LAMP环境,于是安装了ubuntu的desktop版本.安装好了环境使用了一下感觉也没有多大的意思,因为那一段时间没有怎么使用PHP,就这样又忽略掉了这一次学习的机会,直到上周日朋友最近在学习这方面的知识,说是要将一个老式电脑安装一个linux来玩玩.本文原创博客地址:http://www.cnblogs.com/unofficial

Ubuntu12.04(64bit)下安装Qt4总结

本文主要介绍linux系统Ubuntu12.04(64bit)下Qt4.8.5的安装,其中还涉及Fedora9下Qt4的安装. 1.下载软件:去Qt的官网下载Qt4.8.5和Qt Creator软件,下载的具体软件如下: Qt4.8.5软件:qt-everywhere-opensource-src-4.8.5.tar.gz Qt Creator软件:qt-creator-linux-x86_64-opensource-2.5.2.bin 2.解压qt-everywhere-opensource-

Linux(Ubuntu 13.04)环境下 Eclipse perl插件EPIC的安装

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14     这几天要学习perl,打算用eclipse这个IDE,那么装一个perl的插件是很有必要; 网上搜了下,安装EPIC大家提到最多的就是输入http://e-p-i-c.sf.net/updates/testing,但是我遇到的情况是一直在pending,令人抓狂: 后来参照Pydev的插件安装方法,试了下,成功了,下面就是我的步骤 我的系统:Ubuntu13.04 安装步骤: 1:到这里下载插件:http://pan.

Ubuntu 14.04 X64 下安装Appcelerator Titanium Studio。

最近学习Titanium Studio,在MAC OSX 下安装很顺利,转到ubuntu下,麻烦就来了,Titanium Studio IDE是基于Eclipse,所以先装上了JDK 1.7 X64.下载了X64版本的Titanium Studio,解压,运行.然后就挂了,查看官方文档,里面让补上XUL的环境变量,安装ia32-libs libjpeg62 libwebkitgtk-1.0-0 .ia32-libs在13.04以后就不提供了,只能切回13.04的源,强行update后再切回14.

makefile下$(wildcard $^),$^,[email&#160;protected],$?,$&lt;,$(@D),$(@F)

makefile下$(wildcard $^),$^,[email protected],$?,$<,$(@D),$(@F)代表的不同含义 $(filter-out $(PHONY) $(wildcard $^),$^)常用用法为$(wildcard *.c)表示列举当前目录下的所有.c文件这里$^因为会包含依赖的文件名,如果包含的该文件存在,那么将返回其含路径的文件名所以$(wildcard $^)就是用来过滤$^包含的所有文件并且该文件确实在本地存在. 自动化变量$?代表依赖文件列表中被改变

在ubuntu 12.04 x64下编译hadoop2.4

自己编译hadoop:x64 1.安装依赖包 sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev openssh-server maven openssh-client 2.下载hadoop源码 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.4.0/hadoop-2.4.0-src.tar.g

Linux -&gt;&gt; UBuntu 14.04 LTE下主机名称和IP地址解析

UBuntu 14.04 LTE下主机名称和IP地址解析一些相关的配置文件: /etc/hosts: 主机文件.手工配置IP地址和主机名称间的映射.格式为每行一条映射条项: <machine_name> <ip_address>. /etc/network/interfaces: 主机网络接口配置文件,ifup和ifdown命令都依赖于它. /etc/resolv.conf: 名称服务器(DNS)配置文件,而实际上 /etc/resolv.conf是一个链接文件,指向/run/re