make和makefile介绍
<strong>先附上一个比较简单的,测试代码用的Makefile</strong>
</pre><pre code_snippet_id="463854" snippet_file_name="blog_20140904_3_4948303" name="code" class="cpp">.PHONY: all clean CC=gcc
CCFLAGS="-std=gnu99"
RM=rm
RMFLAGS=-fr SRCS=$(wildcard *.c)
OBJS=$(patsubst %.c, %.o, $(SRCS))
EXE=exe all:$(EXE) $(EXE):$(OBJS)
$(CC) $(CCFLAGS) -o $(EXE) $(OBJS) %.o:%.c
$(CC) $(CCFLAGS) -o $@ -c $^ clean:
$(RM) $(RMFLAGS) $(OBJS) *.out
一、make和makefile
make:在必要时重新编译所有受改动影响的源文件。
makefile:告诉make应用程序应该如何构造。
二、make命令
1. make选项和参数
-k: 让make即使发现错误也继续执行,以便于一次性输出所有错误。
-n:输出要执行的操作,不执行
-f:设置makefile文件。默认为makefile,如果该文件不存在则查找Makefile。如果使用GNU Make则优先查找GNUmakefile。
2. 目标
make命令会创建一个特定的目标,可以将该目标作为make的一个参数。如果没有使用该参数,则make将试图创建makefile文件中的第一个目标。
3. 依赖关系
程序目标依赖于.o文件,.o文件依赖于.c和.h文件。
比如一个程序如下所示
/* main.c */
#include "a.h" /* 2.c */
#include "a.h"
#include "b.h" /* 3.c */
#include "b.h"
#include "c.h"
则依赖关系如下所示:
myapp : main.o 2.o 3.o
main.o: main.c a.h
2.o: 2.c a.h b.h
3.o 3.c b.h c.h
如果程序要一次创建多个文件,如要创建可执行文件和用户手册,则可以使用为目标all
all:myapp myapp.help
三、makefile基础语法
1. 宏和注释
注释:make以#开头到行尾表示注释
宏:宏名 = value 表示定义一个宏。引用方法为 $(宏名)或${宏名}。宏的值可以为空
2,一个简单的makefile例子
# makefile中以#开头到行尾表示注释,所以本行是注释 #定义make为目标
all: myapp #宏定义编译器为gcc
CC = gcc myapp: main.o 2.o 3.o
#下一行为make规则,用tab键开头(不能用空格替代)
CC -o myapp main.c 2.o 3.o main.o: main.c a.h
CC -c main.c 2.o: 2.c a.h b.h
CC -c 2.c
3.o: 3.c b.h c.h
gcc -c 3.c
make和makefile介绍的更多相关文章
- 跟我一起写Makefile:MakeFile介绍
makefile 介绍 make命令执行时,需要一个 makefile 文件,以告诉make命令如何去编译和链接程序. 首先,我们用一个示例来说明makefile的书写规则.以便给大家一个感性认识.这 ...
- (转)Makefile介绍
2. Makefile介绍 make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序. 首先,我们用一个示例来说明Makefile的书写规则.以便给大家一个感性 ...
- [转] Makefile 基础 (1) —— Makefile 介绍
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- Makefile 介绍
makefile:是告诉编译器(交叉工具链)如何去编译.链接一个工程的规则. 一.概述 什 么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为 ...
- 第一篇 make与makefile介绍
我们在Linux系统中学习C语言或者C++语言时,大多数时候只是用gcc命令或者g++命令在命令行进行简单的编译.链接即可得到最终的可执行文件,进一步即可验证所写C/C++语言的正确性.但是,在大型工 ...
- GNU Make chapter 2 —— Makefile 介绍
Makefile是由一系列的rule规则组成,这些rule都遵循以下形式: target ... : prerequisites ... command ... ... target(目标) 一般来说 ...
- CFLAGS/CPPFLAGS/CXXFLAGS in Makefile介绍
先来看一张关于Makefile中的常见预定义变量. CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤.大多数程序和库 ...
- makefile介绍1.0
1.gcc参数 -o指定生成文件名 -c只编译不链接 2.makefile标准格式 CC=gcc #编译器变量,#代表注释 SRCS=main.cpp\#源文件变量 a.cpp\ b.cpp\ c.c ...
- GNU autotools自动生成Makefile 介绍
一.目的 使用autotools工具来帮助我们自动地生成符合自由软件惯例的makefile(这样就可以像常见的GNU程序一样,只要使用"./configure", "ma ...
随机推荐
- C#超级方便的ExpandoObject类别
这东西是.NET Framework 4.5 的新东西..发现这个,大概就跟发现新大陆一样的兴奋,让我再次赞叹Anders Hejlsberg 之神.. 这边有MSDN : http://msdn.m ...
- 基于视觉反馈的步进电机X-Y平台控制
关键词:步进电机.XY平台.视觉反馈 用途:工业自动化 文章类型:原理介绍.随笔纪念 @Author:VShawn(singlex@foxmail.com) @Date:2017-05-01 @Lab ...
- python全栈开发从入门到放弃之字典的应用
1.存值 info_dic={'name':'egon','age':18,'sex':'male'} info_dic['job']='IT' #根据key来存值 print(info_dic) 输 ...
- NHibernate应用开发
第一章:NHibernate入门 第一讲:NHibernate架构剖析 第二讲:搭建第一个NHibernate应用程序 第三讲:nhibernate.cfg.xml ...
- 微信小程序 使用腾讯地图SDK详解及实现步骤
信小程序 使用腾讯地图SDK详解及实现步骤 微信小程序JavaScript SDK: 官方文档:http://lbs.qq.com/qqmap_wx_jssdk/index.html 步骤: 1 ...
- maven自动化构建deploy
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- html基础 CSS样式表
CSS(Cascading Style Sheet,叠层样式表),作用是美化HTML网页. /*注释区域*/此为注释语法 一.样式表 (一)样式表的分类 1.内联样式表 和HTML联合显示,控制精确, ...
- MySQL-5.7 存储过程及函数
1.语法 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]]) [characte ...
- python3爬虫全国地址信息
PHP方式写的一团糟所以就用python3重写了一遍,所以因为第二次写了,思路也更清晰了些. 提醒:可能会有502的错误,所以做了异常以及数据库事务处理,暂时没有想到更好的优化方法,所以就先这样吧.待 ...
- HGVS,非HGVS形式的突变描述解释
NG_012232.1(NM_004006.1):c.93+1G>T: 在该转录本NM_004006.1外显子的第93个碱基的下1个碱基(属于内含子)G变为T. NG_012232.1(NM_0 ...