makefile里面的变量使用,系统变量

news2024/9/20 9:00:13

文章目录

  • makefile里面的变量使用

makefile里面的变量使用

calc:add.o sub.o multi.o
        gcc add.o sub.o multi.o calc.cpp -o calc

add.o:add.cpp
        gcc -c add.cpp -o add.o

sub.o:sub.cpp
        gcc -c sub.cpp -o sub.o

multi.o:multi.cpp
        gcc -c multi.cpp -o multi.o

clean:
        rm -rf *.o calc


执行,可以看到可以正常编译我们的源代码文件成为可执行文件

在这里插入图片描述

我们换一种写法

自定义变量

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        gcc $(OBJ) -o $(TARGET)

add.o:add.cpp
        gcc -c add.cpp -o add.o

sub.o:sub.cpp
        gcc -c sub.cpp -o sub.o

multi.o:multi.cpp
        gcc -c multi.cpp -o multi.o

calc.o:calc.cpp
        gcc -c calc.cpp -o calc.o

clean:
        rm -rf *.o calc

执行一下,也是可以的,这也是一种写法

在这里插入图片描述

系统变量
∗ 不包括扩展名的目标文件名称 *不包括扩展名的目标文件名称 不包括扩展名的目标文件名称+ 所有的依赖文件,以空格分隔
$<表示规则中的第一个条件
$?所有时间戳比目标文件晚的依赖文件,以空格分隔
$@ 目标文件的完整名称
所 有不重复的依赖文件,以空格分隔 ^所有不重复的依赖文件,以空格分隔 有不重复的依赖文件,以空格分隔% 如果目标是归档成员,则该变量表示目标的归档成员名称

在这里插入图片描述

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        gcc $(OBJ) -o $(TARGET)

add.o:add.cpp
        gcc -c $^ -o $@

sub.o:sub.cpp
        gcc -c $^ -o $@

multi.o:multi.cpp
        gcc -c $^ -o $@

calc.o:calc.cpp
        gcc -c $^ -o $@

clean:
        rm -rf *.o $(TARGET)

执行一下

在这里插入图片描述

系统常量(可用 make -p 查看)

AS汇编程序的名称, 默认为 as

CC C编译器名称 默认 cc

CPP C预编译器名称 默认 cc -E

CXX C++ 编译器名称 默认 g++

RM文件删除程序别名 默认 rm -f

在这里插入图片描述

在这里插入图片描述

OBJ=add.o sub.o multi.o calc.o
TARGET=calc


$(TARGET):$(OBJ)
        $(CXX) $(OBJ) -o $(TARGET)

add.o:add.cpp
        $(CXX) -c $^ -o $@

sub.o:sub.cpp
        $(CXX) -c $^ -o $@

multi.o:multi.cpp
        $(CXX) -c $^ -o $@

calc.o:calc.cpp
        $(CXX) -c $^ -o $@

clean:
        $(RM) *.o $(TARGET)

show:
        echo $(AS)
        echo $(CC)
        echo $(CPP)
        echo $(CXX)
        echo $(RM)

也是可以正常输出

M) *.o $(TARGET)

show:
echo $(AS)
echo $(CC)
echo $(CPP)
echo $(CXX)
echo $(RM)


也是可以正常输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一练【最大连续1的个数】

一、题目描述 给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 二、题目解析 本题同样是利用滑动窗口的解法。 首先进入窗口&#xff0c;如果是1&#xff0c;就直接让right&#xff0c;但是如果是…

【奶奶看了都会】用AI工具制作微信动态红包封面保姆级教程,附动态红包封面领取

AI一天&#xff0c;人间一年。我是卷福同学&#xff0c;一个在福报厂修过福报的程序员 今年微信红包封面新出了动态封面&#xff0c;点开红包之后是个动图&#xff0c;而且有的还能加上音乐&#xff0c;可以说逼格非常高。假如你在朋友之间发红包用上这么一个封面&#xff0c;朋…

CodeWave学习笔记--采购管理系统

1.CodeWave是什么&#xff1f; CodeWave是一款智能低代码开发平台&#xff0c;基于网易自研拥有大规模参数和深度学习能力的智能模型底座产品架构&#xff0c;为企业级应用提供更加智能化研发的软件生产方式。IT人员可以轻易实现从“智能生成”到“可视化拖拽调整”的全栈低代…

使用Python监听并下载微信聊天表情包

实现的功能 只要有人给你发了表情包&#xff0c;不管是群聊还是个人发的&#xff0c;都将它保存到本地。也许某天斗图的时候就能用到&#xff0c;不过即使有了表情包&#xff0c;还需要一个检索功能&#xff0c;不然这一张一张看也太费眼睛了。 检索表情包 检索表情包的功能…

mariadb数据库从入门到精通

mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化 mariadb数据库的安装以及安全初始化一、实验前提二、mariadb数据库的安装三、mariadb数据库安全初始化3.1 设定数据库基本的安全初始化3.2关闭对外开放端口 系列文章目录一、查看数据库二、进入库并且查看…

Python网络爬虫步骤是什么?新手小白必看 !

python网络爬虫步骤&#xff1a;首先准备所需库&#xff0c;编写爬虫调度程序&#xff1b;然后编写url管理器&#xff0c;并编写网页下载器&#xff1b;接着编写网页解析器&#xff1b;最后编写网页输出器即可。 本教程操作环境&#xff1a;windows7系统、python3.9版&#xff…

2024Java高频面试题之MQ消息中间件,面试都问些什么?(附详细答案)

最近很多同学问我有没有java学习资料&#xff0c;我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号&#xff1a;“ Tom聊架构 ”&#xff0c; 回复暗号&#xff1a;“ 578”即…

游戏开发中的噪声算法

一、噪声 噪声是游戏编程的常见技术&#xff0c;广泛应用于地形生成&#xff0c;图形学等多方面。 那么为什么要引入噪声这个概念呢&#xff1f;在程序中&#xff0c;我们经常使用直接使用最简单的rand()生成随机值&#xff0c;但它的问题在于生成的随机值太“随机”了&#xf…

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况 vim /etc/motd 修改这个文件可以让你刚登录linux 系统显示图形效果 \ ------------ / …

SQL Server Management Studio创建数据表

文章目录 一、建表注意事项1.1 数据类型1.2 建立数据表的基本SQL语法 二、实例说明2.1 创建数据表2.2 实例2 三、标识列和主键示例&#xff1a; 一、建表注意事项 1.1 数据类型 可以看这个去了解数据类型&#xff1a; 1.2 建立数据表的基本SQL语法 建立数据表的基本 SQL 语…

LabVIEW振动数据采集与分析系统

在这个项目中&#xff0c; LabVIEW软件配合精确的硬件组件&#xff0c;以实现高效的振动数据采集和复杂信号分析。硬件方面&#xff0c;系统采用了PCB振动加速度传感器的高灵敏度传感器&#xff0c;以及NI9234型号的数据采集卡&#xff0c;确保了数据采集的高精度和可靠性。软件…

单表查询 -- MySQL(3)

目录 题目&#xff1a; 创建表&#xff1a; 问题&#xff08;17个&#xff09;&#xff1a; 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工…

等离子环制作

免责声明 在您参考该博客制作等离子环前&#xff0c;请仔细阅读以下重要安全警告和免责说明。使用本文档即表示您已充分了解并同意以下条款&#xff1a; 等离子环的危险性&#xff1a;等离子环在运行时玻璃瓶身会产生高温&#xff0c;存在低温烧伤风险。任何时候都不建议用手…

浅谈安科瑞Acrel-2000MG微电网能量管理系统的设计与应用-安科瑞 蒋静

Acrel-2000MG是安科瑞结合当前新型电力系统下微电网的发展与需求研发的一款微电网能量管理系统。通过采集微电网内部源、网、荷、储的实时状态并根据天气预报信息对新能源发电与用电负荷进行预测&#xff0c;利用可控资源和分布式资源分析计算最优调度运行策略&#xff0c;在条…

操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化

运维人员常常需要对资产进行系统初始化的操作&#xff0c;而初始化服务器又是一项繁琐的工作&#xff0c;需要花费运维人员大量的时间和精力。为了提高效率&#xff0c;许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量&#xff0…

一次TCP TIME_WAIT连接数过多告警处理

一次TCP TIME_WAIT连接数过多告警处理 1、前言2、问题回顾3、解决方案 更多技术文章&#xff0c;快来关注微信公众号“运维之美”&#xff0c;不定期更新领取IT学习资料 1、前言 客户环境上在业务高峰期的时候&#xff0c;突然收到主机的TCP time_wait连接数告警过多的告警。运…

Spring第六天(注解开发第三方Bean)

注解开发管理第三方Bean 显然&#xff0c;我们无法在第三方Bean中写入诸如service这样的注解&#xff0c;所以&#xff0c;Spring为我们提供了Bean这一注解来让我们通过注解管理第三方Bean 第二种导入方式由于可读性太低&#xff0c;故只介绍第一种导入方式&#xff0c;这里我…

项目过程管理(禅道)

文章目录 1、禅道的简介2、禅道的安装3、禅道的使用3.1、超级管理员使用操作3.2、产品经理使用操作3.3、项目经理使用操作3.4、测试主管使用操作3.5、项目经理&#xff08;新建一个项目&#xff09;3.6、测试主管&#xff08;对项目发布的第一个版本进行一个测试&#xff09;3.…

Java 面向对象基础 (二)

Java 面向对象基础 (二) 文章目录 Java 面向对象基础 (二)面向对象三大特征封装继承多态 接口和抽象类有什么共同点和区别&#xff1f;深拷贝和浅拷贝区别了解吗&#xff1f;什么是引用拷贝&#xff1f;浅拷贝深拷贝 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 …

(2)(2.1) Andruav Android Cellular(一)

文章目录 前言 1 Andruav 是什么&#xff1f; 2 Andruav入门 3 Andruav FPV 4 Andruav GCS App​​​​​​​ 前言 Andruav 是一个基于安卓的互联系统&#xff0c;它将安卓手机作为公司计算机&#xff0c;为你的无人机和遥控车增添先进功能。 1 Andruav 是什么&#xff…