1> 编译一个文件
2> 编译多个文件
3> 编译多个目录下的文件
4> inclue makefile
5> 使用规则
1>
target:depend
[tab]cmd
depnd:file
[tab]cmd
举例如下
test:main.o
[tab]gcc -o test main.o
main.o:main.c
[tab]gcc -o main.o -c main.c

2>
2.1 目标文件依赖多个文件

CC = gcc

#INC =  -I./include/
#LIBVAR = -lpthread
#LIBPATH = -L./lib #CFLAGS ?= -O2 -g OBJS := main.o
OBJS += add.o
OBJS += sub.o SRCS := main.c
SRCS += add.c
SRCS += sub.c
TARGET = test $(TARGET):$(OBJS)
$(CC) $(INC) $(CFLAG) -o $@ $^ $(LIBVAR) $(LIBPATH)
@echo "build success" $(OBJS):$(SRCS)
$(CC) $(INC) $(CFLAG) -c $^ $(LIBVAR) $(LIBPATH) clean:
rm -rf $(OBJS) $(TARGET) install:
@echo "do nothing"

2.2 生成多个目标文件,我们可使用伪目标

CC = gcc

#INC =  -I./include/
#LIBVAR = -lpthread
#LIBPATH = -L./lib
#CFLAGS ?= -O2 -g
#SRCS = OBJS := hello.o
OBJS += test.o TARGET = test hello all:$(TARGET)
@echo "success to build"
test:test.c
$(CC) $(INC) $(CFLAGS) -o $@ $^ $(LIBVAR) $(LIBPATH) hello:hello.c
$(CC) $(INC) $(CFLAGS) -o $@ $^ $(LIBVAR) $(LIBPATH) clean:
rm -rf $(OBJS) $(TARGET) install:
@echo "do nothing"

$@ 表示目标文件

$^ 表示所有依赖项

$< 表示第一个文件

简化makefile 如下:

CC = gcc

#INC =  -I./include/
#LIBVAR = -lpthread
#LIBPATH = -L./lib
#CFLAGS ?= -O2 -g
#SRCS = #wildcard对.c文件进行展开
SRCS = $(wildcard ./*.c) OBJS = $(patsubst %.c, %.o, $(SRCS)) #将SRCS中后缀.c替换成空,即可执行程序的名字与c名字相同
TARGET = $(patsubst %.c, %, $(SRCS)) all:$(TARGET)
@echo "success to build" $(TARGET):$(OBJS)
gcc $< -o $@ $(OBJS):$(SRCS)
gcc -c $< clean:
rm -rf $(OBJS) $(TARGET) install:
@echo "do nothing"

学习Makefile的更多相关文章

  1. 一个工程实例来学习 Makefile

    March 3, 2015 8:19 PM Makefile 文件的编写 学习前的准备 需要准备的工程目录结构如下: . ├── add │   ├── add_float.c │   ├── add ...

  2. 学习makefile与autoconfig笔记,持续更新

    main.c #include<stdio.h> #include"chen_print.h" int main(int argc , char * argv ){ c ...

  3. 学习makefile的一个工程示例

    前言 makefile推荐资料为陈皓的跟我一起写makefile,需要pdf资源的可以私我 正文 工程目录结构 ---include(放置头文件.h) ------student.h(Student类 ...

  4. [arm学习]makefile学习总结

    makefile不仅仅是一个命令的集合体,其中有一些规则是需要理解掌握的. 首先,了解makefile的规则: //-----------格式---------- 目标 : 依赖1,依赖2 (TAP键 ...

  5. 一个小例子学习makefile

    前言 makefile推荐资料为陈皓的跟我一起写makefile,需要pdf资源的可以私我 正文 目录结构 ---include ------student.h ---src ------studen ...

  6. 学习makefile 的网址

    http://www.ruanyifeng.com/blog/2015/02/make.html http://blog.csdn.net/ruglcc/article/details/7814546 ...

  7. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  8. (二)我的Makefile学习冲动&&编译过程概述

    前言 一 年轻的冲动 二 学习曲线 1 Makefile基本语法 2 bash基础 3 world 三 编译过程概述 1 主机预装工具 2 编译host工具 3 编译交叉工具链 4 编译内核模块 5 ...

  9. 学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现

        (1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2) ...

随机推荐

  1. 51nod--1174 区间中最大的数 (RMQ)

    题目: 1174 区间中最大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j ...

  2. php-beast 代码加密

    https://github.com/liexusong/php-beast 修改php.ini配置 extension_dir = "/usr/lib/php/20151012/" ...

  3. centos6.5环境下的web项目mysql编码方式导致的中文乱码问题

    最近在centos6.5下部署web项目时网页出现中文乱码的问题,在排除掉php之后,把问题锁定在mysql的编码方式上. 解决方法如下: 首先进入mysql命令行,输入命令:SHOW VARIABL ...

  4. bzoj1040基环树

    ... st#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> ...

  5. 利用远程服务器在docker容器搭建pyspider运行时出错的问题

    This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...

  6. Xcode 中armv6 armv7 armv7s arm64 i386 x86_64 归纳 (Architectures, Valid Architectures, Build Active Architecture Only)

    http://www.jianshu.com/p/09b445300d40 简介: armv7|armv7s|arm64都是ARM处理器的指令集 i386|x86_64 是Mac处理器的指令集 目前i ...

  7. Golang 新手可能会踩的 50 个坑【转】

    译文:https://github.com/wuYin/blog/blob/master/50-shades-of-golang-traps-gotchas-mistakes.md 原文:50 Sha ...

  8. SQL反模式学习笔记19 使用*号,隐式的列

    目标:减少输入 反模式:捷径会让你迷失方向 使用通配符和未命名的列能够达到减少输入的目的,但是这个习惯会带来一些危害. 1.破坏代码重构:增加一列后,使用隐式的Insert插入语句报错: 2.查询中使 ...

  9. Rank of Tetris 拓扑排序+并查集

    Problem Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子: ...

  10. 习题集1b: 额外练习 (可选)

    1.练习:4.样本特点 用来描述样本的数字叫做? □ 参数   (√)□ 统计量 □ 变量 □ 常数 2.练习:5.大一学生体重情况 Freidman 博士在一所大学任教,她记录了所在大学每位大一新生 ...