Makefile的简单使用以及高级用法

一、概念

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

二、Makefile基本格式

target ... : prerequisites ...
    command
    ...
    ...
    
其中:
target        - 目标文件, 可以是 Object File, 也可以是可执行文件
prerequisites - 生成 target 所需要的文件或者目标
command       - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头

三、Makefile的简单使用步骤

需要的文件如下:
在这里插入图片描述

1、编写c文件

max.c

int max(int x,int y)
{
	if(x>y)
		return x;
	else
		return y;
}

min.c

int min(int x,int y)
{
	if(x>y)
		return y;
	else
		return x;
}

main.c

#include<stdio.h>
#include "max.h"
#include "min.h"
int main()
{
	int m,n;
	m = max(3,6);
	n = min(3,6);
	printf("max = %d\n,min = %d\n",m,n);
	return 0;	 
}

2、编写h文件

max.h

#ifndef __MAX_H  //如果宏未被定义,则编译下面的代码
#define __MAX_H  //定义宏

int max(int x,int y);

#endif     //结束一个#if…#else条件编译块

min.h

#ifndef __MIN_H
#define __MIN_H

int min(int x,int y);

#endif

3、编写Makefile

main:max.o min.o main.c		#main是要生成的可执行文件 后面是依赖文件 
	gcc min.o max.o main.c -o main	#编译命令
max.o:max.c	max.h		#max.o是要生成的目标文件  后面是依赖文件	  
	gcc -c max.c	#编译命令
min.o:min.c	min.h		#min.o是要生成的目标文件  后面是依赖文件	  
	gcc -c min.c	#编译命令

clean:		#执行make clean的时候要执行的命令
	rm -rf main *.o  #删除main(可执行文件)和所有的.o文件

4、make

在这里插入图片描述

5、清除make clean

在这里插入图片描述

四、Makefile高级用法

1.利用变量控制

$$ 打开makefile中定义的shell变量
$打开makefile中定义的变量
@命令将不被make回显出来

TARGET = main
CC = gcc
CFLAGS = -g
OBJS = max.o min.o main.c

$(TARGET):$(OBJS)
	$(CC) $(OBJS) -o $(TARGET)
max.o:max.c max.h
	$(CC) -c max.c
min.o:min.c min.h
	$(CC) -c min.c
clean:
	rm -rf $(TARGET) *.o

2.使用自动化变量

自动变量含义
$@表示规则中的目标文件集合
$%表示规则中的目标成员名
$<第一个依赖目标. 如果依赖目标是多个, 逐个表示依赖目标
$?比目标新的依赖目标的集合
$^所有依赖目标的集合, 会去除重复的依赖目标
#交叉编译工具链
#CC=arm-linux-gnueabihf-gcc
CC=gcc
#math(-lm)链接库
CFLAGS=-lm -lpthread

#获取全部的c文件
SrcFiles=$(wildcard *.c)

#使用替换函数获取.o文件(将所有.c文件转化为.o文件)
OBJS= $(patsubst %.c,%.o,$(SrcFiles))	

all:main
main:$(OBJS)
	$(CC) -o $@ $^ $(CFLAGS)
%.o:%.c
	$(CC) -c $< $(CFLAGS)
#定义伪目标,防止有歧义
.PHONY:clean all
clean:
	rm -rf $(OBJS)
	rm -rf main
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介回到顶部↑ 本书是专为在UNIX平台下用C语言编制程序的人写的。是以POSIX为标准,主要以C语言为基础,详细介绍了UNIX平台下编写各种应用程序的范例和方法。全书分四个部分,共十五章。本书范例丰富,且具有代表性,如Socket编程、客户/服务端编程、多线程开发、CGI编程、X Windows下的Motif编程等。读者直接或只需稍作修改就可以将它们应用到自己的应用程序开发中。这些范例的源代码可以从配套光盘的电子书中直接拷贝使用。 目录回到顶部↑ 第一部分 基本的系统调用 第1章 文件子系统 1.1 文件子系统的基本概念 1.2 基本的文件输入和输出 1.3 高级的文件操作 第2章 终端操作 2.1 终端的基本概念 2.2 终端输入和输出 2.3 ioctl系统调用 第3章 进程及进程间通信 3.1 进程的基本概念 3.2 进程的一般操作 3.3 进程的特殊操作 3.4 进程间使用管道通信 第4章 信号 4.1 信号的基本概念 4.2 信号机制 4.3 有关信号的系统调用 第5章 部分其他调用 5.1 系统调用 .5.2 相关函数 第二部分 网络编程 第6章 Socket编程基础 6.1 TCP/IP基础知识 6.2 Socket一般描述 6.3 Socket中的主要调用 6.4 Socket的原始方式 第7章 客户/服务器编程 7.1 客户端程序设计 7.2 服务器端程序设计 7.3 服务端程序结构 7.4 多协议(TCP、UDP)服务端 7.5 客户端的并发程序设计 7.6 使用telnet协议的客户端例子 第8章 线程 8.1 有关线程的基本概念 8.2 线程的创建和终止 8.3 线程控制调用 8.4 线程之间的互斥 8.5 线程之间的同步 8.6 线程特定数据区的函数调用 8.7 一个使用线程的客户端并发的例子 8.8 有关线程的函数列表 第9章 CGl编程 9.1 CGI程序的基本概念 9.2 CGI基本编程 9.3 使用脚本语言编写CGl 9.4 Perl语言简介 9.5 一个简单的CGI例子 第三部分 X Window应用程序开发 第10章 X Window和Motif基础 10.1 简介 10.2 XWindow基本概念 10.3 启动Motif窗口管理器 10.4 设置Motif特性 10.5 Widget 第11章 Motif编程 11.1 基本编程概念 11.2 Widget资源 11.3 Motif编程基础 11.4 程序框架 11.5 "HelloWorld!"示例 11.6 管理器 11.7 按钮 11.8 X事件 11.9 其他Widget简介 11.10 菜单 11.11 对话框 第12章 Widget与X事件汇总 12.1 Widget 12.2 X事件 第四部分 常用的编程工具 第13章 编译器及调试工具 13.1 编译器用法入门 13.2 调试器使用入门 13.3 关于库的简介 第14章 Make工具及makefile规则 14.1 概述 14.2 make和makefile的关系 14.3 makefile规则 14.4 伪指令 14.5 make命令行参数 第15章 版本控制 15.1 版本控制概念 15.2 源代码控制系统SCCS 15.3 RCS使用方法 15.4 并发版本控制CVS
GNU make中文手册.....................................................................................................................1 ver - 3.8.......................................................................................................................................1 第一章:概述...............................................................................................................................7 1.1 概述.................................................................................................................................7 1.2 准备知识..........................................................................................................................8 第二章 GNU make 介绍.............................................................................................................9 2 GNU make 介绍....................................................................................................................9 2.1 Makefile简介..................................................................................................................10 2.2 Makefile规则介绍...........................................................................................................11 2.3 简单的示例.....................................................................................................................12 2.4 make如何工作...............................................................................................................13 2.5 指定变量........................................................................................................................15 2.6 自动推导规则.................................................................................................................16 2.7 另类风格的makefile.......................................................................................................17 2.8 清除工作目录过程文件...................................................................................................18 第三章:Makefile 总述..............................................................................................................20 3 Makefile总述........................................................................................................................20 3.1 Makefile的内容...............................................................................................................20 3.2 makefile文件的命名.......................................................................................................21 3.3 包含其它makefile文件....................................................................................................22 3.4 变量 MAKEFILES..........................................................................................................24 3.5 变量 MAKEFILE_LIST..................................................................................................26 3.6 其他特殊变量.................................................................................................................26 3.7 makefile文件的重建.......................................................................................................27 3.8 重载另外一个makefile....................................................................................................28 3.9 make如何解析makefile文件...........................................................................................30 3.9.1 变量取值..................................................................................................................30 3.9.2 条件语句..................................................................................................................31 3.9.3 规则的定义...............................................................................................................31 3.10 总结...............................................................................................................................31 第四章:Makefile的规则............................................................................................................33 4 Makefile规则........................................................................................................................33 4.1 一个例子........................................................................................................................33 4.2 规则语法........................................................................................................................34 4.3 依赖的类型.....................................................................................................................35 4.4 文件名使用通配符..........................................................................................................36 4.4.1 统配符使用举例........................................................................................................37 4.4.2 通配符存在的缺陷....................................................................................................38 4.4.3 函数wildcard............................................................................................................38 4.5 目录搜寻........................................................................................................................39 4.5.1 一般搜索(变量VPATH)........................................................................................39 4.5.2 选择性搜索(关键字vpath)....................................................................................40 4.5.3 目录搜索的机制........................................................................................................41 4.5.4 命令行和搜索目录....................................................................................................44 4.5.5 隐含规则和搜索目录.................................................................................................44 4.5.6 库文件和搜索目录....................................................................................................45 4.6 Makefile伪目标...............................................................................................................46 4.7 强制目标(没有命令或依赖的规则).............................................................................50 4.8 空目标文件.....................................................................................................................50 4.9 Makefile的特殊目标.......................................................................................................51 4.10 多目标............................................................................................................................54 4.11 多规则目标.....................................................................................................................55 4.12 静态模式........................................................................................................................56 4.12.1 静态模式规则的语法.......................................................................................56 4.12.2 静态模式和隐含规则.......................................................................................58 4.13 双冒号规则.....................................................................................................................59 4.14 自动产生依赖.................................................................................................................60 第五章:规则的命令..................................................................................................................63 5 为规则书写命令...................................................................................................................63 5.1 命令回显........................................................................................................................63 5.2 命令的执行.....................................................................................................................64 5.3 并发执行命令.................................................................................................................65 5.4 命令执行的错误..............................................................................................................67 5.5 中断make的执行............................................................................................................68 5.6 make的递归执行............................................................................................................69 5.6.1 变量MAKE...............................................................................................................70 5.6.2 变量和递归...............................................................................................................71 5.6.3 命令行选项和递归....................................................................................................75 5.6.4 -w选项......................................................................................................................77 5.7 定义命令包.....................................................................................................................78 5.8 空命令............................................................................................................................80 第六章:Makefile中的变量.........................................................................................................81 6 使用变量..............................................................................................................................81 6.1 变量的引用.....................................................................................................................82 6.2 两种变量定义(赋值)...................................................................................................83 6.2.1 递归展开式变量........................................................................................................83 6.2.2 直接展开式变量........................................................................................................85 6.2.3 定义一个空格...........................................................................................................86 6.2.4 “?=”操作符.............................................................................................................87 6.3 变量的高级用法..............................................................................................................88 6.3.1 变量的替换引用........................................................................................................88 6.3.2 变量的套嵌引用........................................................................................................88 6.4 变量取值........................................................................................................................92 6.5 如何设置变量.................................................................................................................93 6.6 追加变量值.....................................................................................................................94 6.7 override 指示符.............................................................................................................96 6.8 多行定义........................................................................................................................98 6.9 系统环境变量.................................................................................................................99 6.10 目标指定变量...............................................................................................................101 6.11 模式指定变量...............................................................................................................103 第七章:Makefile的条件执行...................................................................................................104 7 Makefile的条件判断...........................................................................................................104 7.1 一个例子......................................................................................................................104 7.2 条件判断的基本语法....................................................................................................105 7.3 标记测试的条件语句....................................................................................................108 第八章:make的内嵌函数........................................................................................................109 8 make的函数.......................................................................................................................109 8.1 函数的调用语法............................................................................................................109 8.2 文本处理函数...............................................................................................................110 8.2.1 $(subst FROM,TO,TEXT).....................................................................................110 8.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT)...................................................110 8.2.3 $(strip STRINT).....................................................................................................112 8.2.4 $(findstring FIND,IN)............................................................................................112 8.2.5 $(filter PATTERN…,TEXT)...................................................................................112 8.2.6 $(filter-out PATTERN...,TEXT).............................................................................113 8.2.7 $(sort LIST)...........................................................................................................113 8.2.8 $(word N,TEXT)....................................................................................................114 8.2.9 $(wordlist S,E,TEXT)............................................................................................114 8.2.10 $(words TEXT)............................................................................................114 8.2.11 $(firstword NAMES…)................................................................................115 8.3 文件名处理函数............................................................................................................115 8.3.1 $(dir NAMES…)....................................................................................................115 8.3.2 $(notdir NAMES…)...............................................................................................116 8.3.3 $(suffix NAMES…)...............................................................................................116 8.3.4 $(basename NAMES…).......................................................................................117 8.3.5 $(addsuffix SUFFIX,NAMES…)...........................................................................117 8.3.6 $(addprefix PREFIX,NAMES…)...........................................................................118 8.3.7 $(join LIST1,LIST2)...............................................................................................118 8.3.8 $(wildcard PATTERN)..........................................................................................119 8.4 foreach 函数................................................................................................................119 8.5 if 函数..........................................................................................................................120 8.6 call函数........................................................................................................................121 8.7 value函数.....................................................................................................................123 8.8 eval函数.......................................................................................................................124 8.9 origin函数.....................................................................................................................125 8.10 shell函数......................................................................................................................127 8.11 make的控制函数..........................................................................................................128 8.11.1 $(error TEXT…)...........................................................................................128 8.11.2 $(warning TEXT…)......................................................................................129 第九章:执行make..................................................................................................................130 9 执行make..........................................................................................................................130 9.1 指定makefile文件.........................................................................................................130 9.2 指定终极目标...............................................................................................................131 9.3 替代命令的执行............................................................................................................133 9.4 防止特定文件重建........................................................................................................135 9.5 替换变量定义...............................................................................................................136 9.6 使用make进行编译测试...............................................................................................137 9.7 Tmake的命令行选项....................................................................................................138 第十章:make的隐含规则........................................................................................................143 10 使用隐含规则...............................................................................................................143 10.1 隐含规则的使用............................................................................................................143 10.2 make的隐含规则一览...................................................................................................145 10.3 隐含变量......................................................................................................................148 10.3.1 代表命令的变量............................................................................................149 10.3.2 命令参数的变量............................................................................................150 10.4 make隐含规则链..........................................................................................................151 10.5 模式规则......................................................................................................................153 10.5.1 模式规则介绍................................................................................................153 10.5.2 模式规则示例................................................................................................155 10.5.3 自动化变量....................................................................................................156 T10.5.4 T模式的匹配.................................................................................................159 10.5.5 万用规则.......................................................................................................160 10.5.6 重建内嵌隐含规则.........................................................................................161 10.6 缺省规则......................................................................................................................162 10.7 后缀规则......................................................................................................................162 10.8 隐含规则搜索算法........................................................................................................164 第十一章:使用make更新静态库文件......................................................................................166 11 更新静态库文件............................................................................................................166 11.1 库成员作为目标............................................................................................................166 11.2 静态库的更新...............................................................................................................167 11.2.1 更新静态库的符号索引表..............................................................................168 11.3 make静态库的注意事项...............................................................................................168 11.4 静态库的后缀规则........................................................................................................169 第十二章 : GNU make的特点...............................................................................................170 12 GNU make的一些特点.................................................................................................170 12.1 源自System v的特点....................................................................................................170 12.2 源自其他版本的特点....................................................................................................171 12.3 GNU make自身的特点.................................................................................................172 第十三章 和其它版本的兼容....................................................................................................174 13 不兼容性......................................................................................................................174 第十四章 Makefile的约定........................................................................................................176 14 书写约定......................................................................................................................176 14.1 基本的约定...................................................................................................................176 14.2 规则命令行的约定........................................................................................................178 14.3 代表命令变量...............................................................................................................179 14.4 安装目录变量...............................................................................................................180 14.5 Makefile的标准目标名..................................................................................................185 14.6 安装命令分类...............................................................................................................190 第十五章 make的常见错误信息...............................................................................................193 15 make产生的错误信息...................................................................................................193 附录1:关键字索引..................................................................................................................196 GNU make可识别的指示符:..............................................................................................196 GNU make函数:...............................................................................................................197 GNU make的自动化变量.....................................................................................................197 GNU make环境变量............................................................................................................198 后序.........................................................................................................................................198
《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。接着系统地讲解了嵌入式Linux的环境搭建,以及嵌入式Linux的I/O与文件系统的开发、进程控制开发、进程间通信开发、网络应用开发、基于中断的开发、设备驱动程序的开发以及嵌入式图形界面的开发等,并且还安排了丰富的实验内容与课后实践,使读者能够边学边用,更快更好地掌握所学知识。   《嵌入式Linux应用程序开发标准教程(第2版)》可作为高等院校电子类、电气类、控制类等专业高年级本科生、研究生学习嵌入式Linux的教材,也可供希望转入嵌入式领域的科研和工程技术人员参考使用,还可作为嵌入式培训班的教材和参考书。 第1章 Linux快速入门 1.1 嵌入式Linux基础 1.1.1 Linux发展概述 1.1.2 Linux作为嵌入式操作系统的优势 1.1.3 Linux发行版本 1.1.4 如何学习Linux 1.2 Linux安装 1.2.1 基础概念 1.2.2 硬件需求 1.2.3 安装准备 1.3 Linux文件及文件系统 1.3.1 文件类型及文件属性 1.3.2 文件系统类型介绍 1.3.3 Linux目录结构 1.4 实验内容——安装Linux操作系统 1.5 本章小结 1.6 思考与练习 第2章 Linux基础命令 2.1 Linux常用命令 2.1.1 用户系统相关命令 2.1.2 文件相关命令 2.1.3 压缩打包相关命令 2.1.4 文件比较合并相关命令 2.1.5 网络相关命令 2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关命令 2.4 实验内容 2.4.1 在Linux下解压常见软件 2.4.2 定制Linux系统服务 2.5 本章小结 2.6 思考与练习 第3章 Linux下C编程基础 3.1 Linux下C语言编程概述 3.1.1 C语言简单回顾 3.1.2 Linux下C语言编程环境概述 3.2 常用编辑器 3.2.1 进入vi 3.2.2 初探emacs 3.3 gcc编译器 3.3.1 gcc编译流程解析 3.3.2 gcc编译选项分析 3.4 gdb调试器 3.4.1 gdb使用流程 3.4.2 gdb基本命令 3.5 make工程管理器 3.5.1 makefile基本结构 3.5.2 makefile变量 3.5.3 makefile规则 3.5.4 make管理器的使用 3.6 使用autotools 3.6.1 autotools使用流程 3.6.2 使用autotools所生成的makefile 3.7 实验内容 3.7.1 vi使用练习 3.7.2 用gdb调试程序的bug 3.7.3 编写包含多文件的makefile 3.7.4 使用autotools生成包含多文件的makefile 3.8 本章小结 3.9 思考与练习 第4章 嵌入式系统基础 4.1 嵌入式系统概述 4.1.1 嵌入式系统简介 4.1.2 嵌入式系统发展历史 4.1.3 嵌入式系统的特点 4.1.4 嵌入式系统的体系结构 4.1.5 几种主流嵌入式操作系统分析 4.2 ARM处理器硬件开发平台 4.2.1 ARM处理器简介 4.2.2 ARM体系结构简介 4.2.3 ARM9体系结构 4.2.4 S3C2410处理器详解 4.3 嵌入式软件开发流程 4.3.1 嵌入式系统开发概述 4.3.2 嵌入式软件开发概述 4.4 实验内容——使用JTAG烧写NandFlash 4.5 本章小结 4.6 思考与练习 第5章 嵌入式Linux开发环境的搭建 5.1 嵌入式开发环境的搭建 5.1.1 嵌入式交叉编译环境的搭建 5.1.2 超级终端和minicom配置及使用 5.1.3 下载映像到开发板 5.1.4 编译嵌入式Linux内核 5.1.5 Linux内核源码目录结构 5.1.6 制作文件系统 5.2 U-Boot移植 5.2.1 Bootloader介绍 5.2.2 U-Boot概述 5.2.3 U-Boot源码导读 5.2.4 U-Boot移植主要步骤 5.3 实验内容——创建Linux内核和文件系统 5.4 本章小结 5.5 思考与练习 第6章 文件I/O编程 6.1 Linux系统调用及用户编程接口(API) 6.1.1 系统调用 6.1.2 用户编程接口(API) 6.1.3 系统命令 6.2 Linux中文件及文件描述符概述 6.3 底层文件I/O操作 6.3.1 基本文件操作 6.3.2 文件锁 6.3.3 多路复用 6.4 嵌入式Linux串口应用编程 6.4.1 串口概述 6.4.2 串口设置详解 6.4.3 串口使用详解 6.5 标准I/O编程 6.5.1 基本操作 6.5.2 其他操作 6.6 实验内容 6.6.1 文件读写及上锁 6.6.2 多路复用式串口操作 6.7 本章小结 6.8 思考与练习 第7章 进程控制开发 7.1 Linux进程概述 7.1.1 进程的基本概念 7.1.2 Linux下的进程结构 7.1.3 Linux下进程的模式和类型 7.1.4 Linux下的进程管理 7.2 Linux进程控制编程 7.3 Linux守护进程 7.3.1 守护进程概述 7.3.2 编写守护进程 7.3.3 守护进程的出错处理 7.4 实验内容 7.4.1 编写多进程程序 7.4.2 编写守护进程 7.5 本章小结 7.6 思考与练习 第8章 进程间通信 8.1 Linux下进程间通信概述 8.2 管道 8.2.1 管道概述 8.2.2 管道系统调用 8.2.3 标准流管道 8.2.4 FIFO 8.3 信号 8.3.1 信号概述 8.3.2 信号发送与捕捉 8.3.3 信号的处理 8.4 信号量 8.4.1 信号量概述 8.4.2 信号量的应用 8.5 共享内存 8.5.1 共享内存概述 8.5.2 共享内存的应用 8.6 消息队列 8.6.1 消息队列概述 8.6.2 消息队列的应用 8.7 实验内容 8.7.1 管道通信实验 8.7.2 共享内存实验 8.8 本章小结 8.9 思考与练习 第9章 多线程编程 9.1 Linux线程概述 9.1.1 线程概述 9.1.2 线程机制的分类和特性 9.2 Linux线程编程 9.2.1 线程基本编程 9.2.2 线程之间的同步与互斥 9.2.3 线程属性 9.3 实验内容——“生产者消费者”实验 9.4 本章小结 9.5 思考与练习 第10章 嵌入式Linux网络编程 10.1 TCP/IP概述 10.1.1 OSI参考模型及TCP/IP参考模型 10.1.2 TCP/IP协议族 10.1.3 TCP和UDP 10.2 网络基础编程 10.2.1 socket概述 10.2.2 地址及顺序处理 10.2.3 socket基础编程 10.3 网络高级编程 10.4 实验内容——NTP协议实现 10.5 本章小结 10.6 思考与练习 第11章 嵌入式Linux设备驱动开发 11.1 设备驱动概述 11.1.1 设备驱动简介及驱动模块 11.1.2 设备分类 11.1.3 设备号 11.1.4 驱动层次结构 11.1.5 设备驱动程序与外界的接口 11.1.6 设备驱动程序的特点 11.2 字符设备驱动编程 11.3 GPIO驱动程序实例 11.3.1 GPIO工作原理 11.3.2 GPIO驱动程序 11.4 块设备驱动编程 11.5 中断编程 11.6 按键驱动程序实例 11.6.1 按键工作原理 11.6.2 按键驱动程序 11.6.3 按键驱动的测试程序 11.7 实验内容——test驱动 11.8 本章小结 11.9 思考与练习 第12章 Qt图形编程基础 12.1 嵌入式GUI简介 12.1.1 Qt/Embedded 12.1.2 MiniGUI 12.1.3 Microwindows、TinyX等 12.2 Qt/Embedded开发入门 12.2.1 Qt/Embedded介绍 12.2.2 Qt/Embedded信号和插槽机制 12.2.3 搭建Qt/Embedded开发环境 12.2.4 Qt/Embedded窗口部件 12.2.5 Qt/Embedded图形界面编程 12.2.6 Qt/Embedded对话框设计 12.3 实验内容——使用Qt编写“Hello,World”程序 12.4 本章小结
GNU make中文手册..................................................................................................................... 1 ver - 3.8 ....................................................................................................................................... 1 第一章:概述...............................................................................................................................7 1.1 概述 ................................................................................................................................. 7 1.2 准备知识.......................................................................................................................... 8 第二章 GNU make 介绍 ............................................................................................................. 9 2 GNU make 介绍.................................................................................................................... 9 2.1 Makefile简介.................................................................................................................. 10 2.2 Makefile规则介绍........................................................................................................... 11 2.3 简单的示例..................................................................................................................... 12 2.4 make如何工作 ............................................................................................................... 13 2.5 指定变量 ........................................................................................................................ 15 2.6 自动推导规则................................................................................................................. 16 2.7 另类风格的makefile ....................................................................................................... 17 2.8 清除工作目录过程文件................................................................................................... 18 第三章:Makefile 总述.............................................................................................................. 20 3 Makefile总述........................................................................................................................ 20 3.1 Makefile的内容............................................................................................................... 20 3.2 makefile文件的命名 ....................................................................................................... 21 3.3 包含其它makefile文件.................................................................................................... 22 3.4 变量 MAKEFILES.......................................................................................................... 24 3.5 变量 MAKEFILE_LIST .................................................................................................. 26 3.6 其他特殊变量................................................................................................................. 26 3.7 makefile文件的重建 ....................................................................................................... 27 3.8 重载另外一个makefile.................................................................................................... 28 3.9 make如何解析makefile文件........................................................................................... 30 3.9.1 变量取值 .................................................................................................................. 30 3.9.2 条件语句 .................................................................................................................. 31 3.9.3 规则的定义............................................................................................................... 31 3.10 总结 ...............................................................................................................................31 第四章:Makefile的规则............................................................................................................ 33 4 Makefile规则........................................................................................................................ 33 4.1 一个例子........................................................................................................................ 33 4.2 规则语法 ........................................................................................................................ 34 4.3 依赖的类型..................................................................................................................... 35 4.4 文件名使用通配符.......................................................................................................... 36 4.4.1 统配符使用举例........................................................................................................ 37 4.4.2 通配符存在的缺陷.................................................................................................... 38 4.4.3 函数wildcard ............................................................................................................ 38 4.5 目录搜寻........................................................................................................................ 39 4.5.1 一般搜索(变量VPATH )........................................................................................ 39 4.5.2 选择性搜索(关键字vpath ).................................................................................... 40 4.5.3 目录搜索的机制........................................................................................................ 41 4.5.4 命令行和搜索目录 .................................................................................................... 44 4.5.5 隐含规则和搜索目录................................................................................................. 44 4.5.6 库文件和搜索目录 .................................................................................................... 45 2004年9月11日 2 ----------------------- Page 3----------------------- GNU make中文手册 4.6 Makefile伪目标............................................................................................................... 46 4.7 强制目标(没有命令或依赖的规则)............................................................................. 50 4.8 空目标文件..................................................................................................................... 50 4.9 Makefile的特殊目标....................................................................................................... 51 4.10 多目标............................................................................................................................ 54 4.11 多规则目标..................................................................................................................... 55 4.12 静态模式 ........................................................................................................................ 56 4.12.1 静态模式规则的语法 ....................................................................................... 56 4.12.2 静态模式和隐含规则 ....................................................................................... 58 4.13 双冒号规则..................................................................................................................... 59 4.14 自动产生依赖................................................................................................................. 60 第五章:规则的命令 .................................................................................................................. 63 5 为规则书写命令 ................................................................................................................... 63 5.1 命令回显 ........................................................................................................................ 63 5.2 命令的执行..................................................................................................................... 64 5.3 并发执行命令................................................................................................................. 65 5.4 命令执行的错误.............................................................................................................. 67 5.5 中断make的执行............................................................................................................ 68 5.6 make的递归执行............................................................................................................ 69 5.6.1 变量MAKE ............................................................................................................... 70 5.6.2 变量和递归............................................................................................................... 71 5.6.3 命令行选项和递归 .................................................................................................... 75 5.6.4 -w选项...................................................................................................................... 77 5.7 定义命令包..................................................................................................................... 78 5.8 空命令............................................................................................................................ 80 第六章:Makefile中的变量......................................................................................................... 81 6 使用变量.............................................................................................................................. 81 6.1 变量的引用..................................................................................................................... 82 6.2 两种变量定义(赋值)................................................................................................... 83 6.2.1 递归展开式变量........................................................................................................ 83 6.2.2 直接展开式变量........................................................................................................ 85 6.2.3 定义一个空格 ........................................................................................................... 86 6.2.4 “?=”操作符............................................................................................................. 87 6.3 变量的高级用法.............................................................................................................. 88 6.3.1 变量的替换引用........................................................................................................ 88 6.3.2 变量的套嵌引用........................................................................................................ 88 6.4 变量取值........................................................................................................................ 92 6.5 如何设置变量................................................................................................................. 93 6.6 追加变量值..................................................................................................................... 94 6.7 override 指示符............................................................................................................. 96 6.8 多行定义........................................................................................................................ 98 6.9 系统环境变量................................................................................................................. 99 6.10 目标指定变量............................................................................................................... 101 6.11 模式指定变量 ............................................................................................................... 103 第七章:Makefile的条件执行................................................................................................... 104 7 Makefile的条件判断........................................................................................................... 104 7.1 一个例子...................................................................................................................... 104 7.2 条件判断的基本语法 .................................................................................................... 105 7.3 标记测试的条件语句 .................................................................................................... 108 第八章:make的内嵌函数........................................................................................................ 109 8 make的函数....................................................................................................................... 109 2004年9月11日 3 ----------------------- Page 4----------------------- GNU make中文手册 8.1 函数的调用语法............................................................................................................ 109 8.2 文本处理函数............................................................................................................... 110 8.2.1 $(subst FROM,TO,TEXT) ..................................................................................... 110 8.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT) ................................................... 110 8.2.3 $(strip STRINT)..................................................................................................... 112 8.2.4 $(findstring FIND,IN) ............................................................................................ 112 8.2.5 $(filter PATTERN…,TEXT) ................................................................................... 112 8.2.6 $(filter-out PATTERN...,TEXT) ............................................................................. 113 8.2.7 $(sort LIST) ........................................................................................................... 113 8.2.8 $(word N,TEXT) .................................................................................................... 114 8.2.9 $(wordlist S,E,TEXT)............................................................................................ 114 8.2.10 $(words TEXT) ............................................................................................ 114 8.2.11 $(firstword NAMES…) ................................................................................ 115 8.3 文件名处理函数............................................................................................................ 115 8.3.1 $(dir NAMES…) .................................................................................................... 115 8.3.2 $(notdir NAMES…)............................................................................................... 116 8.3.3 $(suffix NAMES…) ............................................................................................... 116 8.3.4 $(basename NAMES…) ....................................................................................... 117 8.3.5 $(addsuffix SUFFIX,NAMES…) ........................................................................... 117 8.3.6 $(addprefix PREFIX,NAMES…) ........................................................................... 118 8.3.7 $(join LIST1,LIST2)............................................................................................... 118 8.3.8 $(wildcard PATTERN) .......................................................................................... 119 8.4 foreach 函数................................................................................................................ 119 8.5 if 函数.......................................................................................................................... 120 8.6 call函数........................................................................................................................ 121 8.7 value函数..................................................................................................................... 123 8.8 eval函数....................................................................................................................... 124 8.9 origin函数..................................................................................................................... 125 8.10 shell函数...................................................................................................................... 127 8.11 make的控制函数.......................................................................................................... 128 8.11.1 $(error TEXT…) ........................................................................................... 128 8.11.2 $(warning TEXT…)...................................................................................... 129 第九章:执行make .................................................................................................................. 130 9 执行make .......................................................................................................................... 130 9.1 指定makefile文件......................................................................................................... 130 9.2 指定终极目标............................................................................................................... 131 9.3 替代命令的执行............................................................................................................ 133 9.4 防止特定文件重建........................................................................................................ 135 9.5 替换变量定义............................................................................................................... 136 9.6 使用make进行编译测试............................................................................................... 137 9.7 Tmake的命令行选项.................................................................................................... 138 第十章:make的隐含规则........................................................................................................ 143 10 使用隐含规则............................................................................................................... 143 10.1 隐含规则的使用............................................................................................................ 143 10.2 make的隐含规则一览................................................................................................... 145 10.3 隐含变量...................................................................................................................... 148 10.3.1 代表命令的变量 ............................................................................................ 149 10.3.2 命令参数的变量 ............................................................................................ 150 10.4 make隐含规则链.......................................................................................................... 151 10.5 模式规则 ...................................................................................................................... 153 10.5.1 模式规则介绍................................................................................................ 153 10.5.2 模式规则示例................................................................................................ 155 10.5.3 自动化变量.................................................................................................... 156 2004年9月11日 4 ----------------------- Page 5----------------------- GNU make中文手册 T10.5.4 T模式的匹配 ................................................................................................. 159 10.5.5 万用规则....................................................................................................... 160 10.5.6 重建内嵌隐含规则......................................................................................... 161 10.6 缺省规则 ...................................................................................................................... 162 10.7 后缀规则 ...................................................................................................................... 162 10.8 隐含规则搜索算法........................................................................................................ 164 第十一章:使用make更新静态库文件...................................................................................... 166 11 更新静态库文件............................................................................................................ 166 11.1 库成员作为目标............................................................................................................ 166 11.2 静态库的更新............................................................................................................... 167 11.2.1 更新静态库的符号索引表.............................................................................. 168 11.3 make静态库的注意事项 ............................................................................................... 168 11.4 静态库的后缀规则........................................................................................................ 169 第十二章 : GNU make的特点............................................................................................... 170 12 GNU make的一些特点................................................................................................. 170 12.1 源自System v的特点.................................................................................................... 170 12.2 源自其他版本的特点.................................................................................................... 171 12.3 GNU make 自身的特点................................................................................................. 172 第十三章 和其它版本的兼容.................................................................................................... 174 13 不兼容性...................................................................................................................... 174 第十四章 Makefile的约定 ........................................................................................................ 176 14 书写约定...................................................................................................................... 176 14.1 基本的约定................................................................................................................... 176 14.2 规则命令行的约定........................................................................................................ 178 14.3 代表命令变量............................................................................................................... 179 14.4 安装目录变量............................................................................................................... 180 14.5 Makefile的标准目标名.................................................................................................. 185 14.6 安装命令分类............................................................................................................... 190 第十五章 make的常见错误信息............................................................................................... 193 15 make产生的错误信息................................................................................................... 193 附录1:关键字索引.................................................................................................................. 196 GNU make可识别的指示符:.............................................................................................. 196 GNU make函数:............................................................................................................... 197 GNU make的自动化变量..................................................................................................... 197 GNU make环境变量............................................................................................................ 198 后序
### 回答1: Cpp是一种高级编程语言,被广泛用于开发各种类型的应用程序。它继承了C语言的基本语法和特性,并在此基础上进行了扩展和改进。Cpp具有面向对象的编程能力,支持封装、继承和多态等概念。相比于C语言,Cpp提供了更强大的数据类型和更丰富的库函数,使得程序的开发更加高效和方便。 C是一种通用的编程语言,是很多其他编程语言的基础。它具有高效、简洁和可移植的特性,广泛应用于系统级编程和嵌入式开发。与Cpp相比,C语言更加底层,更加接近计算机硬件。编写C语言程序需要更加关注内存和性能等细节,但也使程序更加高效和灵活。 Makefile是一种用于自动化构建程序的工具。通过定义一系列规则和依赖关系,Makefile可以自动判断需要重新编译的文件,并生成最终的可执行文件。它可以大大简化程序的管理和构建过程,尤其适用于大型的项目。使用Makefile,我们可以通过运行一个简单的命令就可以自动完成编译、链接和测试等繁琐的工作。 总结来说,Cpp是一种高级编程语言,C是一种通用的编程语言,而Makefile是一种用于自动化构建程序的工具。它们在程序开发过程中都起到了重要的作用,对于提高开发效率和管理程序非常有帮助。 ### 回答2: C++是一种高级编程语言,它是C语言的扩展和增强版本。C++具有更强大的面向对象特性和更高级的抽象能力,同时也兼容C语言的语法和库函数,因此可以方便地与C代码进行混合编程。 C语言是一种通用的高级编程语言,它提供了一系列的库函数和语法规则,非常适合用于系统编程和嵌入式开发。通过使用C语言,可以编写高效而底层的代码,灵活控制计算机硬件资源。 Makefile是一种用于自动化构建软件的工具。通过编写Makefile,可以定义编译、链接和运行程序的规则和依赖关系。Makefile在C/C++的开发中经常使用,它可以根据文件修改的依赖关系,仅重新编译被修改过的文件,以提高编译的效率。 在C/C++的开发过程中,通常会使用C语言编写底层的系统代码和对硬件资源的操作,并使用C++编写上层业务逻辑和面向对象的代码。通过使用Makefile,可以将源代码、库文件和头文件的编译过程自动化,简化了编译和构建的步骤。 总结来说,C++是C语言的扩展和增强版本,具有更丰富的特性和抽象能力;C语言是一种通用的高级编程语言,非常适合于系统编程和嵌入式开发;而Makefile是一种用于自动化构建软件的工具,可以简化编译和构建的过程。在C/C++的开发中,这三者经常会同时使用。 ### 回答3: CPP (C++)是一种编程语言,它是C语言的扩展版本,具有更多的功能和特性。CPP是面向对象的语言,支持封装、继承和多态等特性,同时还具有更强大的数据类型和模板机制。CPP被广泛应用于开发各种类型的软件和应用程序,特别是在游戏开发、系统编程和科学计算等领域。 C语言是一种通用的、高级的编程语言,它于1972年由Dennis Ritchie开发。C语言的设计原则是简洁、高效和可移植性,适用于系统级编程和嵌入式开发。C语言是一种结构化的语言,具有丰富的控制结构和强大的指针操作,但不支持面向对象编程。 Makefile是一种用于自动化构建软件的工具,它可以根据源代码的依赖关系和规则来自动编译和链接程序。Makefile通常使用文本文件编写,其中定义了编译器、编译参数、链接器等工具的命令和选项。通过Makefile,开发人员可以轻松地管理复杂的项目结构,只需通过运行make命令,就能自动编译更新的代码文件,而无需手动编译每个文件。 在C和CPP编程中,Makefile是一个非常重要的工具,它可以帮助程序员管理代码的编译过程,提高开发效率。Makefile可以根据源代码的修改情况自动更新需要重新编译的文件,而不必重新编译所有的源文件,从而加快了编译的速度。此外,Makefile还可以定义其他任务,如执行测试、清理临时文件等,极大地简化了整个开发过程。 总之,CPP是一种面向对象的编程语言,C是一种结构化的编程语言,而Makefile是一个用于自动化构建软件的工具。它们在不同的层面上贡献着程序开发的便利性和高效性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值