GNU make-Makefile文件简介
Makefile简介
Makefile是一种特殊格式的文件,被make工具使用来管理软件的构建过程。Makefile定义了一组规则和依赖关系,告诉make如何编译和链接程序。
Makefile语句
TARGET: PREREQUISTS
COMMAND
Makefile的语句由上述三部分组成,例如target: hello prerequists: hello.c command: gcc hello.c -o hello
hello: hello.c
gcc hello.c -o hello
Makefile引用
$@指代当前TARGET
Makefile变量
递归展开方式变量
这一类型的定义由
=进行定义,此时是严格的文本替换。例如:xs = mh
ns = $(xs)
all:;
echo $(ns)
在执行语句时,首先,
echo $(ns)会替换为echo $(xs)然后才会替换成echo mh。这就是递归的进行替换。直接展开方式变量
这一类型的定义由
:=进行定义,在变量定义时就展开。ns := $(xs)
xs = mh
此时由于
ns是直接展开的,如果xs定义在后面,此时ns会直接变为空,无法完成对xs变量的引用。
Makefile伪目标
伪目标使用.PHONY进行声明,其后的值如share,此语句表明share并不是真正的目标,只执行后续的命令,而不生成目标。
.PHONY: shared
shared: # 不生成shared目标文件
ls
Makefile实例
CC = gcc
APP = webserver
SRCS-y := reactor.c webserver.c websocket.c
all: shared
.PHONY: shared build
shared: build/$(APP)-shared
ln -sf $(APP)-shared build/$(APP)
build/$(APP)-shared: $(SRCS-y) | build
$(CC) $(SRCS-y) -o $@
build:
@mkdir -p $@ # @不打印命令
注意
Makefile在vscode中使用时可能会报错"make: *** No rule to make target '@mkdir', needed by 'build'. Stop."原因:
vscode中的tab可能默认为四个空格解法:将
tab修改为非四个空格
GNU make-Makefile文件简介的更多相关文章
- GNU的makefile文件编写说明
这篇文章讲的相当详细,转来收藏: linux下Makefile学习 MAC
- 面试题----makefile文件的作用
make工具和makefile文件 make工具和makefile文件简介 make命令和makefile文件的结合提供了一个在项目管理领域十分强大的工具.它不仅常被用于控制源代码的编译和链接,而且还 ...
- 简介make命令和makefile文件
一.为什么要用到 make 命令和 makefile 文件 在 Linux 下编写一个程序,每次编译都需要在命令行一行一行的敲命令.如果是一个很小的程序还好说,命令不怎的复杂,编译速度也挺快,但是对于 ...
- 例解 autoconf 和 automake 生成 Makefile 文件
本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...
- 使用autoconf和automake生成Makefile文件(转)
Makefile好难写 曾经也总结了一篇关于Makefile的文章<make和makefile的简单学习>.但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦. ...
- 【C编程基础】make命令和makefile文件
1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile). ...
- 利用 autoconf 和 automake 生成 Makefile 文件
一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...
- linux下使用automake工具自动生成makefile文件
linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
- 使用automake等命令自动生成Makefile文件 (转载)
使用automake等命令自动生成Makefile文件 Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...
随机推荐
- DotNetGuide专栏C#/.NET/.NET Core充电站(让你学习不迷路)
DotNetGuide简介 记录.收集和总结C#/.NET/.NET Core基础知识.学习路线.开发实战.编程技巧练习.学习视频.文章.书籍.项目框架.社区组织.开发必备工具.常见面试题.面试须知. ...
- 【经验分享】Docker容器部署方法说明
前 言 本案例适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VMwa ...
- vue - ElementUI
关于ElementUI最好还是通过实践项目来做,来熟悉. 这只是一些ElementUI的注意事项,至此vue2的内容真的全部完结,后面将继续vue3的内容更新. 一.完整引入 一般提及什么什么UI会有 ...
- C语言gcc编译环境搭建
第一步,根据以下链接下载gcc工具包: gcc工具包下载地址: 链接:https://pan.baidu.com/s/1JqEjakTcWLPv7p6zkah6sA提取码:k4d2 第二步,将下载好的 ...
- [HDCTF 2023]BabyMisc
BabyMisc ...脑洞坑题(如果7z密码不是那一串超长字符串真不至于0解) 先打开Script.zip,随便打开一个文件夹,得到的是pxx的文件,内容为16进制字节.猜测pxx为对应字节的位置 ...
- Java高效率查询Mysql节点树数据
示例 目前有一个功能:任务计划管理,必然存在多级子任务的父子级关系,每个任务还会存在其它数据的关联表. mysql无法一次性递归查出想要的数据结构,想必很多人都会是通过根目录递归查询数据库的方式查出树 ...
- SqlParameter,参数化查询问题
SqlParameter p = new SqlParameter("@pageIndex", (object)pageIndex); SqlParameter带有两个参数的构造函 ...
- 一图看懂网易数帆指标平台EasyMetrics
简化数据分析,提升决策速度!EasyMetrics,指标的全生命周期管理平台. 为何EasyMetrics? 集中化管理,降低门槛.开箱即用,提升查询速度. 适合人群? 业务用户.开发者.数据团队,E ...
- vscode配置项
因为vscode的默认配置,导致现在用的不是很舒服.总结了以下配置能让你的vscode用着更舒服. 1: 问题: 输入log按tab快速生成代码后,提示居然没了? 解决方案: "editor ...
- [oeasy]python0135_命名惯用法_name_convention
命名惯用法 回忆上次内容 上次 了解了isidentifier的细节 关于 关键字 关于 下划线 如何查询 变量所指向的地址? id 如何查询 已有的各种变量? locals 如果 用一个 ...