第一层 显式规则

目标:依赖

[tab] 指令

伪目标:.PHONY:

递归规则

hello : hello.o
gcc hello.o -o hello
hello.o : hello.s
gcc -c hello.s -o hello.o
hello.s : hello.i
gcc -S hello.i -o hello.s
hello.i : hello.i
gcc -E hello.c -o hello.i .PHONY:
clearall:
rm -rf hello.o hello.s hello.i hello
clear:
rm -rf hello.o hello.s hello hello.i

多个文件的makefile

目标:依赖

[tab] gcc

test:circle.o cube.o main.o
gcc circle.o cube.o main.o -o test circle.o:circle.c
gcc -c circle.c -o circle.o
cube.o : cube.c
gcc -c cube.c -o circle.o
main.o : main.c
gcc -c main.c -o main.o .PHONY:
clearall:
rm -rf circle.o cube.o main.o test
clear:
rm -rf circle.o cube.o main.o

变量 + 隐藏规则

  • = 替换(赋值)
  • += 追加
  • := 恒等

%.c,%.o 任意的.c文件

*.c,.c 所有的.c 文件

$ 符号表示取变量

TAR = test #目标文件
OBJ = circle.o cube.o main.o
CC := gcc
CFLAG = -o -Wall $(TAR):$(OBJ)
$(CC) $(OBJ) -o $(TAR);
# 依赖怎么写?
(%.o):%.c
$(CC) -c %.c -o -Wall %.o .PHONY:
clearall:
rm -rf $(TAR) $(OBJ)
clear:
rm -rf $(OBJ)

通配符

$^ 所有依赖文件

$@ 所有目标文件

$< 第一个目标文件

实践

//注意是#ifndef!!! cube.h文件
#ifndef CUBE_H
#define CUBE_H
#include<stdio.h>
void cube();
#endif //cube.c
#include "cube.h"
void cube()
{
printf("cube");
}
//circle.h
#ifndef Circle_H
#define Circle_H
#include<stdio.h>
void circle();
#endif //circle.c #include<stdio.h>
#include "circle.h"
void circle()
{
printf("s= PI * r^2\n");
printf("c= 2 * PI * r\n");
} //main.c
include "circle.h"
#include "cube.h"
int main()
{
cube();
circle();
return 0;
}

执行make

(base) matytan@matytandeMacBook-Pro maketest % make
gcc -c -o circle.o circle.c
gcc -c -o cube.o cube.c
gcc -c -o main.o main.c
gcc circle.o cube.o main.o -o test ;
(base) matytan@matytandeMacBook-Pro maketest % ./test

makefile简单学习(一)的更多相关文章

  1. makefile简单学习

    前言 在C语言中,我们需要将源代码生成可执行的程序.这里面其实要经过非常多的步骤.参看下图: 这中间主要通过make命令,读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化 ...

  2. Makefile的学习笔记

    Makefile的学习笔记 标签: makefilewildcard扩展includeshellfile 2012-01-03 00:07 9586人阅读 评论(2) 收藏 举报  分类: Linux ...

  3. 运用Autoconf和Automake生成Makefile的学习之路

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的M ...

  4. Linux yum的配置 , python环境管理, nginx搭建简单学习

    Linux yum的配置 , python环境管理, nginx搭建简单学习 一丶配置yum的数据仓库 ### yum 工具, 方便,自行解决软件之间的依赖关系. # 配置yum源仓库 (可以使用,清 ...

  5. Gcc的Makefile简单使用

    Gcc的Makefile简单使用http://blog.chinaunix.net/uid-9330295-id-2425867.html

  6. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  7. Makefile基础学习

    Makefile基础学习 理论知识 makefile关系到了整个工程的编译规则.一个工程中的源文件不计其数,并且按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文 ...

  8. shiro简单学习的简单总结

    权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...

  9. CentOS 简单学习 firewalld的使用

    1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...

随机推荐

  1. p3c 插件,是怎么检查出你那屎山的代码?

    作者:小傅哥 博客:https://bugstack.cn 原文:https://mp.weixin.qq.com/s/RwzprbY2AhdgslY8tbVL-A 一.前言 你会对你用到都技术,好奇 ...

  2. python-matplotlib学习(1)

    1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x=np.linspace(-1,1,50) 5 y=2*x+1 6 plt.pl ...

  3. 做毕设的tricks

    CNKI上无法下载博硕士学位论文的PDF版本,只有CAJ版本,挺恶心的.直接下载安装Chrome extension就可以解决了. 链接:https://share.weiyun.com/5HGFF2 ...

  4. Python 通过 .cube LUT 文件对图像加滤镜

    Python 通过 .cube LUT 文件对图像加滤镜 一个好用的python给图片加滤镜的代码: https://github.com/CKboss/PyApplyLUT 这个是对C++代码的封装 ...

  5. 数据库MHA故障分析

    一.故障分析 1.MHA故障以后是否正常:不正常 2.如果master恢复了?MHA还能自动恢复吗?:不能 3.主从恢复删除此文件 rm    saved_master_binlog_from_192 ...

  6. div标签的理解

    在HTML里面,div标签是一个块状元素,不会和其他元素排列在同一行,会默认和下面的元素换行,但是如果我们需要把几个div标签排在同一行,需要怎么做? 第一种:修改块状元素 源码: <div i ...

  7. js Promise用法

    Promise 英文意思是 承诺的意思,是对将来的事情做了承诺, Promise 有三种状态, Pending 进行中或者等待中 Fulfilled 已成功 Rejected 已失败 Promise ...

  8. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  9. redis编译安装、哨兵、集群

    编译安装 #下载源代码解压 wget https://download.redis.io/releases/redis-5.0.13.tar.gz -P /home/ tar -xvf /home/r ...

  10. CentOS7部署Prometheus

    部署Prometheus监控报警系统 一.Prometheus介绍 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB):Prometheus使用Go语言开发, ...