1.格式: 

目标:依赖

  规则    规则前有一个tab键 ,缺少tab键出错,使用空格替代也不可以

(1). 例子: 编写makefile 编译 main.c ,fun.c , fun.h

test:main.o fun.o
gcc main.o fun.o -o test fun.o:fun.c
gcc -c fun.c -o fun.o
main.o:main.c
gcc -c main.c -o main.o .PHONY #此行是防止,当前编译的目录下存在clean文件,不然报错
clean:
rm *.o test

(2).  使用变量

# 使用变量代替比较长的编译工具名
CC=gcc
#使用变量代替较多的参数
CFLAGS=-c -Wall test:main.o fun.o
&(CC) main.o fun.o -o test main.o:main.c
$(CC) $(CFLAGS) main.c -o main.o
# gcc -c main.c -o main.o -Wall #不使用变量情况,使用变量时 用 $ 符取变量值 fun.o:fun.c
&(CC) $(CFLAGS) fun.c -o fun.o .PNOHY
clean:
rm *.o test

  

(3). 自动变量
$*    不包含扩展名的目标文件名称
$+    所有的依赖文件,以空格分开,并且以出现的先后为序,可能包含重复的依赖文件
$<    第一个依赖文件的名称
$?     所有时间戳比目标文件晚的依赖文件,并以空格隔开
$@   目标文件的完整名称
$^     所有不重复的依赖文件,以空格隔开

CC=gcc
CFLAGS=-c -Wall test:main.o fun.o
$(CC) $^ -o $@ # $^ 所有不重复的依赖文件,以空格隔开 main.o:main.c
$(CC) $(CFLAGS) $< -o $@ # $< 第一个依赖文件的名称,$@ 目标文件的完整名称
fun.o:fun.c
$(CC) $(CFLAGS) fun.c -o fun.o .PHONY
clean:
rm *.o test

  

(4).  隐含规则

CC=gcc
CFLAGS=-c -Wall # 隐含规则,注意目标文件必须是一个已存在的文件,下一行的规则没有,但需要tab键
main:mian.o fun.o # 此处目标不能再写test了,必须是已存在的文件名 .PHONY
clean:
rm *.o main

makefile自动编译的更多相关文章

  1. (二)Makefile——自动编译、清理、安装软件

    每次都要敲击冗长的编译命令,每次都要清理之前的编译中间结果和最终结果,在安装软件时复制剪切大量的动态库,在卸载软件时删除很多的动态库和配置文件.好吧,我被逼向了makefile. helloworld ...

  2. Makefile 多目录自动编译

    适用于多目录结构 C 工程自动编译. makefile 分成三类: 1. 工程根目录 makefile  : 这个makefile执行分成两个阶段 a)递归进入每个子目录, 逐个执行子目录里面的 ma ...

  3. 使用Ant构建struts2 web工程,自动编译,打包成war

    c&c++语言通常使用make脚本来构建和管理自己的工程,同样java也有自己的构建工具(Ant),使用时需要写一个biuld.xml,有点类似c&c++里的makefile. 一.首 ...

  4. Makefile自动生成

    automake/autoconf入门作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ...

  5. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

  6. [CI] 使用Jenkins自动编译部署web应用

    写在前面 初步接触持续集成自动化过程,本篇主要介绍基于Jenkins实现持续集成的方式,通过案例介绍线上自动编译及部署的配置过程 持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作 ...

  7. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  8. gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全

    gulp是基于流的前端构件化工具.目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等. 这个鬼东西有什么用?请参考https://www.zhihu.com/question/3 ...

  9. Eclipse不自动编译java文件的终极解决方案

    最近我的eclipse经常犯傻,项目中总是有很多,启动项目也是没有启动类.查了下项目中生成的class文件,我靠竟然没有,或者还是以前的.原来是eclipse犯傻了,它没帮我自动编译java文件.一般 ...

随机推荐

  1. Web 请求之--性能相关

    本博客代码运行环境 python : Python 3.7.1rc1 version pip : pip 19.1.1 version Scrapy: scrapy 1.6.0 version asy ...

  2. java环境--JDK和Tomcat在linux上的安装和配置

    Tomcat在Linux上的安装与配置 以下使用的Linux版本为: Redhat Enterprise Linux 7.0 x86_64,Tomcat版本为tomcat-7.0.54.1.下载JDK ...

  3. 调整Winfrom控件WebBrowser的默认浏览器内核版本

    一.问题解析: 今天在调试程序的时候,需要使用C#的客户端远程登录一个Web页面,用到了WebBrowser控件.但是却发现了一件很神奇的事情:当前浏览器使用的内核,可以通过访问下面这个网站获取:ht ...

  4. jQuery取值/赋值常见方法收集

    1.文本取值.赋值 $("#id").attr("value"); $("#id").val(); $("#id).attr(&q ...

  5. @ResponseEntity返回值(怪异)

    定制相应头 /** * 将返回数据放在响应体中 * * ResponseEntity<String>:响应体中内容的类型 * @return */ //@ResponseBody @Req ...

  6. Pycharm文档模板变量

    点击这里查看JetBrains官方英文源文件 本篇Blog只是搬运外加大概翻译一下. File template variables A file template can contain varia ...

  7. 【leetcode】926.Flip String to Monotone Increasing

    题目如下: A string of '0's and '1's is monotone increasing if it consists of some number of '0's (possib ...

  8. Mysql查看编码方式

    查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Varia ...

  9. 【Dart学习】--Dart之字符串(String)的相关方法总结

    字符串定义使用单引号或双引号 String a = "abcdefg"; String b = '; 创建多行字符串,保留内在格式使用三个单引号或三个双引号 创建多行字符串,保留内 ...

  10. AcWing 224. 计算器 (BSGS算法)打卡

    题目:https://www.acwing.com/problem/content/226/ 题意:有一个计算器能完成三种功能 1.给定Y,Z,P,计算YZModPYZModP 的值: 2.给定Y,Z ...