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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值