Makefile

原创

makefile

目录

makefile建立

1.最简单的makefile

2.makefile进阶

3.makefile优化

(1)常用的变量名(约定俗成的):

(2)一些特殊字符

(3)特殊变量

(4)makefile内置函数

代码


makefile三要素:目标;依赖;命令 

makefile执行原理:从上到下建立依赖关系;从下到上执行

makefile建立

通过实现一个加减乘除方法作为例子,文件结构如图所示

Makefile_第1张图片

src中文件如图所示:

Makefile_第2张图片

然后编写src中Makefile文件

1.最简单的makefile


   
   
   
   
  1. app:add.c jian.c cheng.c chu.c main.c
  2. gcc add.c jian.c cheng.c chu.c main.c -I../include -o app

2.makefile进阶


   
   
   
   
  1. app:add.o jian.o cheng.o chu.o main.o
  2. gcc add.o jian.o cheng.o chu.o main.o -o app
  3. add.o:add.c
  4. gcc -c add.c -I../include
  5. jian.o:jian.c
  6. gcc -c jian.c -I../include
  7. cheng.o:cheng.c
  8. gcc -c cheng.c -I../include
  9. chu.o:chu.c
  10. gcc -c chu.c -I../include
  11. main.o:main.c
  12. gcc -c main.c -I../include

3.makefile优化

(1)常用的变量名(约定俗成的):

CC:表示c编译器版本

CFLAGS:表示编译时参数

CPPFLAGS:表示预处理参数

CXX:表示C++编译器版本

CXXFLAGS:表示c++编译时参数

LDFLAGS:表示库参数库选项

INCLUDE:表示头文件目录

TARGET:表示目标名

RM:删除选项

(2)一些特殊字符

$(变量):对变量取值

@:只显示命令结果,忽略命令本身

-:如果当前命令出错,忽略错误,继续执行

%:通配符,通配符是以遍历的方式实现的

(3)特殊变量

用于当前目标:

$@:代表目标

$<:代表依赖中的第一个

$^:代表所有依赖

(4)makefile内置函数

wildcard:按照指定格式获取当前目录下的所有文件名

例:SOURCEFILE=$(wildcard *.c):获取.c后缀的所有文件并返回赋值给SOURCEFILE

patsubst:根据指定的格式进行替换(字符串替换)

例:DEFFILE=$(patsubst %.c,%.o,$(SOURCEFILE))

代码


   
   
   
   
  1. .PHONY:clean #伪目标
  2. CC=gcc
  3. INCLUDE=-I../include
  4. CFLAGS=-c -g -Wall $(INCLUDE) #-g增加调试信息 -Wall严格编译
  5. CPPFLAGS=-E -D #-E头文件展开 -D编译时定义宏
  6. CXX=g++
  7. LDFLAGS=-L../lib -lpthread #这只是个例子,并没用到该库。-l库名
  8. TARGET=app
  9. RM=rm -rf
  10. SRCFILE=$(wildcard *.c)
  11. DEFFILE=$(patsubst %.c,%.o,$(SRCFILE))
  12. $(TARGET):$(DEFFILE)
  13. $(CC) $^ -o $(TARGET)
  14. %.o:%.c
  15. $(CC) $(CFLAGS) $<
  16. clean:
  17. -$(RM) $(TARGET) $(DEFFILE)
  18. install:
  19. sudo cp $(TARGET) /usr/bin
  20. uninstall:
  21. sudo $(RM) /usr/bin/$(TARGET)

 

0 个人打赏
文章最后发布于: 2019-08-18 21:47:30
        
展开阅读全文

Makefile

10-19 阅读数 387

 生成Makefile当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:Makefile可以像这样由“.pro”文件生成:   qmake-... 博文

makefile学习笔记-makefile介绍(另类风格的makefile)

04-18 阅读数 110

20180412makefile学习笔记-makefile介绍(另类风格的makefile)makefile可以自动推导命令,makefile也可以将重复的[.h]收拢起来,即新风格的makefile... 博文 来自: weixin_39089680的博客

makefile学习笔记-makefile总述(引用其他的Makefile)

05-02 阅读数 1101

20180412makefile学习笔记-makefile总述(引用其他的Makefile)在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include... 博文 来自: weixin_39089680的博客

制作Makefile

09-03 阅读数 32

如何生成标准Makefile,生成标准Makefile需要哪些工具?生成的具体步骤是什么。一个简单的Makefile是怎么样的?... 博文 来自: wolfnx

makefile学习笔记-makefile介绍(Makefile文件名)

04-18 阅读数 248

20180412makefile学习笔记-makefile介绍(Makefile文件名)默认情况下,make命令会在当前目录下按照顺序找寻文件名为"GNUmakefile"、&qu... 博文 来自: weixin_39089680的博客

Makefile编写及一个简单的Makefile架构实现

06-29 阅读数 1359

本文通过总结makefile的相关使用,并将以前大型项目中用到的Makefile简单的记录下,以便以后快速应用:Makefile常用命令GCC/G++常用编译参数简单Makefile框架实现Makef... 博文 来自: ChrisMM

makefile文件格式

04-30 阅读数 1739

makefile文件写法 博文 来自: YellowMax

makefile学习笔记-makefile介绍(makefile是如何工作的)

04-18 阅读数 119

20180411makefile学习笔记-makefile介绍(makefile是如何工作的在默认的方式下,也就是我们只输入make命令那么:1、make会在当前目录下找名字为“Makefile”或“... 博文 来自: weixin_39089680的博客

Makefile - cuiyifang的专栏 - CSDN博客

10-2

Makefile - 小小小不的博客 - CSDN博客

9-30

这传奇你卸载算我输!爆率9.8,不花一分钱,一刀7777亿! 贪玩游戏 · 顶新

configure.in Makefile.am 生成Makefile

02-26 阅读数 190

在GitHub上下载一源码工程,没有Makefile,只有configure.in和Makefile.am生成configure文件生成aclocal.m4文件aclocal根据configure.i... 博文 来自: weixin_41666796的博客

Windows中的DLL - hhwhg123的博客 - CSDN博客

8-30

设计模式以及C++实现(一)创建型模式 - hhwhg123的博客 - CSDN博客

8-30

Makefile万能模板

12-18 阅读数 648

Makefile模板,RELEASE 博文 来自: V__KING__的专栏

		
Datrilla关注
Datrilla

217篇文章

排名:千里之外

syhhl007关注
syhhl007

167篇文章

排名:千里之外

烫烫烫烫烫烫烫关注
烫烫烫烫烫烫烫

187篇文章

排名:千里之外

wolfnx关注
wolfnx

14篇文章

排名:千里之外

Linux内核Makefile

06-05 阅读数 1119

顶层Makefile根据不同的平台,对各类target分类并调用相应的规则Makefile生成目标.config内核配置文件arch/$(ARCH)/Makefile具体平台相关的Makefilesc... 博文 来自: qlexcel的专栏

[003-Makefile-笔记] Makefile的规则

12-18 阅读数 276

Makefile的规则 博文 来自: p_fly的博客

makefile$@ $^ $? - IOT_SHUN的博客 - CSDN博客

10-10

Makefile是什么 - chenghuan3272 - CSDN博客

9-29

Makefile 语法入门

09-14 阅读数 4383

一、Makefile简介Makefile是一种常用于编译的脚本语言。它可以更好更方便的管理你的项目的代码编译,节约编译时间(没改动的文件不编译)。注意Makefile文件命令必须是Makefile或者... 博文 来自: 阿飞的博客

makefile写法

12-23 阅读数 113

背景在windows,linux,macOS三个平台上都写过代码,但是使用不同平台的不同IDE,当代码转移到另一个平台时,编译却很麻烦。例如我在macos上用xcode写的代码,在ubuntu上用qt... 博文 来自: yuanl15的博客

Makefile的编译方式

04-13 阅读数 81

Makefile使用GCC的命令进行程序编译时,当程序是单个文件时编译是比较方便的,但当工程中的文件数目增多,甚至非常庞大,并且目录结构关系复杂时,便需要通过makefile来进行程序的编译。示例:目... 博文 来自: jiaomubai的博客

GUN Makefile入门

03-31 阅读数 2601

本文只要针对GNUMakefile前8章及进行了学习和整理。目录1.Makefile入门什么是Makefile 为什么要使用Makefile2.Makefile初级语法1基本规则 宏定义(变量定义)2... 博文

程序员实用工具网站

09-04 阅读数 9万+

目录1、搜索引擎2、PPT3、图片操作4、文件共享5、应届生招聘6、程序员面试题库7、办公、开发软件8、高清图片、视频素材网站9、项目开源10、在线工具宝典大全程序员开发需要具备良好的信息检索能力,为... 博文 来自: 不脱发的程序猿

我花了一夜用数据结构给女朋友写个H5走迷宫游戏

09-21 阅读数 4万+

起因又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而怨气满满!而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有... 博文 来自: bigsai

别再翻了,面试二叉树看这 11 个就够了~

09-13 阅读数 1万+

写在前边数据结构与算法:不知道你有没有这种困惑,虽然刷了很多算法题,当我去面试的时候,面试官让你手写一个算法,可能你对此算法很熟悉,知道实现思路,但是总是不知道该在什么地方写,而且很多边界条件想不全面... 博文 来自: 一个不甘平凡的码农

Java泛型 通配符详解

10-07 阅读数 1471

对于 博文 来自: anlian523的博客

代码整洁 vs 代码肮脏

09-16 阅读数 8万+

写出整洁的代码,是每个程序员的追求。《cleancode》指出,要想写出好的代码,首先得知道什么是肮脏代码、什么是整洁代码;然后通过大量的刻意练习,才能真正写出整洁的代码。WTF/min是衡量代码质量... 博文 来自: www.bysocket.com

让程序员崩溃的瞬间(非程序员勿入)

09-16 阅读数 9万+

今天给大家带来点快乐,程序员才能看懂。来源:https://zhuanlan.zhihu.com/p/470665211.公司实习生找Bug2.在调试时,将断点设置在错误的位置3.当我有一个很棒的调试... 博文 来自: strongerHuang

接私活必备的 10 个开源项目!

09-17 阅读数 2万+

点击蓝色“GitHubDaily”关注我加个“星标”,每天下午18:35,带你逛GitHub!作者|SevDot来源|http://1t.click/VE8W...... 博文 来自: GitHubDaily

阿里资深工程师教你如何优化 Java 代码!

09-17 阅读数 1万+

作者|王超责编|伍杏玲明代王阳明先生在《传习录》谈为学之道时说:私欲日生,如地上尘,一日不扫,便又有一层。着实用功,便见道无终穷,愈探愈深,必使精白无一毫不彻方可。代码中的"坏味道",如"私欲"如"灰... 博文 来自: CSDN资讯

周杰伦新歌《说好不哭》上线,程序员哭了......

09-19 阅读数 7万+

欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活... 博文 来自: 华为云官方博客

GitHub开源的10个超棒后台管理面板

09-21 阅读数 1万+

目录1、AdminLTE2、vue-Element-Admin3、tabler4、Gentelella5、ng2-admin6、ant-design-pro7、blur-admin8、iview-ad... 博文 来自: 不脱发的程序猿

Java中创建对象的5种方法

09-23 阅读数 4279

将会列举5种方法去创建Java对象,以及他们如何与构造函数交互,并且会有介绍如何去使用这些方法的示例。作为一个Java开发人员,我们每天都会创建大量的Java对象,但是我们通常会使用依赖管理系统去创建... 博文 来自: liululee的博客

100 个网络基础知识普及,看完成半个网络高手

09-23 阅读数 4万+

欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活... 博文 来自: 华为云官方博客

深入理解C语言指针

09-28 阅读数 0

博文

C语言实现推箱子游戏

09-29 阅读数 0

博文

面试官:兄弟,说说基本类型和包装类型的区别吧

09-29 阅读数 0

博文

8000字干货:那些很厉害的人是怎么构建知识体系的

09-29 阅读数 0

博文

Android完整知识体系路线(菜鸟-资深-大牛必进之路)

09-29 阅读数 0

博文

C语言这么厉害,它自身又是用什么语言写的?

09-27 阅读数 0

博文

Java版的7种单例模式

09-30 阅读数 0

博文

彻底搞懂JVM类加载器:基本概念

10-01 阅读数 0

博文

开源大阅兵:盘点那些走向世界的中国项目

10-02 阅读数 0

博文

计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路

10-03 阅读数 0

博文

Python使用tkinter模块实现推箱子游戏

10-06 阅读数 0

博文

认真推荐几个不错的技术公众号

10-03 阅读数 0

博文

NULL,0,`0`,`\0`,"0"你分得清吗?

10-04 阅读数 0

博文

Python 愤怒的小鸟代码实现(1):物理引擎pymunk使用

10-06 阅读数 0

博文

国产阿里OCEANBAS勇夺TPC-C冠军,200行代码解读它的速度源头

10-04 阅读数 0

博文

Java 初级面试题(持续更,近期更新时间:2019/10/11)

10-04 阅读数 0

博文

前端开发必备网站推荐

10-05 阅读数 0

博文

中国物联网激荡20年

10-05 阅读数 0

博文

写个最简单的植物大战僵尸修改器吧!c和python

10-05 阅读数 0

博文

【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!

10-06 阅读数 0

博文

Vue 3.0 源码开放,看看都有哪些新特性

10-06 阅读数 0

博文

用Matplotlib,妈妈再也不担心我没有表情包斗图了

10-06 阅读数 0

博文

十大优秀编程项目,让你的简历金光闪闪

10-06 阅读数 0

博文

第二弹!python爬虫批量下载高清大图

10-06 阅读数 0

博文

SpringBoot注解梳理

10-06 阅读数 0

博文

ReentrantLock 源码解读之lock和unlock过程

10-08 阅读数 0

博文

Spring Boot 无侵入式 实现API接口统一JSON格式返回

10-06 阅读数 0

博文

tensorflow安装(机器学习入门,小白包会)

10-07 阅读数 0

博文

结合OpenCV与TensorFlow进行人脸识别

10-07 阅读数 0

博文

算法小程序:倒水问题

10-07 阅读数 0

博文

Mybatis连接数据库常用语句整理汇总(1)

10-07 阅读数 0

博文

python入门教程

10-07 阅读数 0

博文

今年国庆的一些感受

10-07 阅读数 0

博文

数据库基础(常用SQL语句)

10-07 阅读数 0

博文

Java中几种排序算法

10-07 阅读数 0

博文

JS面试中常见的算法题

10-07 阅读数 0

博文

            
                        

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

打赏

hhwhg123

“你的鼓励将是我创作的最大动力”

5C币 10C币 20C币 50C币 100C币 200C币
        

你可能感兴趣的:(linux)