08 - 条件判断语句

---- 整理自狄泰软件唐佐林老师课程

文章目录

  • 1. 条件判断语句
  • 2. 语法说明
  • 3. 经验
  • 4. 代码

1. 条件判断语句

  • makefile 中支持条件判断语句
    • 可以根据条件的值来决定 make 的执行
    • 可以比较两个不同变量或者变量和常量的值

在这里插入图片描述
注:条件判断语句只能用于控制 make 实际执行的语句;但是,不能控制规则中命令的执行过程。

2. 语法说明

  • 常用形式
ifxxx (arg1,arg2)

在这里插入图片描述

  • 其它
ifxxx "arg1" "arg2"
ifxxx 'arg1' 'arg2'
ifxxx "arg1" 'arg2'
ifxxx 'arg1' "arg2"
.PHONY: testvar1 := A
var2 := $(var1)
var3 :=test:ifeq ($(var1),$(var2)) # ifeq else endif前不能有tab键@echo "var1 == var2"else@echo "var1 != var2"endif

在这里插入图片描述

.PHONY : testvar1 := A
var2 := $(var1)
var3 :=			 # 定义一个没有值的变量test:ifeq ($(var1),$(var2)) # 前面使用空格@echo "var1 == var2"  # 前面使用tabelse@echo "var1 != var2" 	endififneq ($(var2),)@echo "var2 is NOT empty"    else@echo "var2 is empty"    endififdef var2@echo "var2 is NOT empty"    else@echo "var2 is empty"    endififndef var3@echo "var3 is empty"    else@echo "var3 is NOT empty"    endif

在这里插入图片描述

3. 经验

  • 条件判断语句之前可以有空格,但不能有 tab 字符('\t')
  • 在条件语句中不要使用自动变量($@$^$<
  • 一条完整的条件语句必须位于同一个 Makefile 中
  • 条件判断类似于 C 语言中的宏,预处理阶段有效,执行阶段无效
  • make 在加载 makefile 时:
    • 首先计算表达式的值(赋值方式不同,计算方式不同)
    • 根据判断语句的表达式决定执行的内容
.PHONY : testvar1 := 
var2 := $(var1)var3 =		    
var4 = $(var3)  # 递归赋值,无法在预处理时判断是否被定义,所以var4打印出已经被定义test:ifdef var1@echo "var1 is defined"else@echo "var1 is not defined"endififdef var2@echo "var2 is defined"else@echo "var2 is not defined"endififdef var3@echo "var3 is defined"else@echo "var3 is not defined"endififdef var4@echo "var4 is defined"else@echo "var4 is not defined"endif

在这里插入图片描述

.PHONY : testvar1 := 
var2 := $(var1)var3 =		    
var4 = $(var3)  # 递归赋值,无法在预处理时判断是否被定义,所以var4打印出已经被定义
var3 = 3 # make在解析makefile时,完全可以判断出var3是否有值,而不用等到执行期间test:ifdef var1@echo "var1 is defined"else@echo "var1 is not defined"endififdef var2@echo "var2 is defined"else@echo "var2 is not defined"endififdef var3@echo "var3 is defined"else@echo "var3 is not defined"endififdef var4@echo "var4 is defined"else@echo "var4 is not defined"endif

在这里插入图片描述

4. 代码

【08 条件判断语句】

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js宏任务微任务输出解析

第一种情况 setTimeout(function () {console.log(setTimeout 1) //11 宏任务new Promise(function (resolve) {console.log(promise 1) //12 同步函数resolve()}).then(function () {console.log(promise then) //13 微任务})})async function async1() {console.log(async1 s…

【代码随想录——哈希表】

1.哈希表理论基础 首先什么是 哈希表&#xff0c;哈希表&#xff08;英文名字为Hash table&#xff0c;国内也有一些算法书籍翻译为散列表&#xff0c;大家看到这两个名称知道都是指hash table就可以了&#xff09;。 那么哈希表能解决什么问题呢&#xff0c;一般哈希表都是用…

HarmonyOS实战开发-如何实现查询当前城市实时天气功能

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式&#xff0c; 数据接口是和风&#xff08;天气预报&#xff09;&#xff0c; 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是&#xff0c;查询当前城市的实时天气&#xff0c; 目前已实现的功能…

水表集中抄表器是什么?什么叫水表集中抄表器?

1.简述 水表集中抄表器是一种智能化的智能设备&#xff0c;主要运用于高效率、清晰地收集管理方法住户或商业客户的用水数据信息。它摒弃了传统的人工抄表方法&#xff0c;完成了远程控制全自动抄表&#xff0c;大大提高了水务管理的效率和精确性。 2.功能特点 2.1实时数据分…

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么&#xff1f; 想象一下&#xff0c;你有一个大型的乐高项目&#xff0c;你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中&#xff0c;build.gradle 就是这个清单&#xff0c;它告诉计算机如何构建&#xff08;组合&#xff09;你的软…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

麦肯锡精英高效阅读法笔记

系列文章目录 如何有效阅读一本书笔记 读懂一本书笔记 麦肯锡精英高效阅读法笔记 文章目录 系列文章目录序章 无法读书的5个理由无法读书的理由① 忙于工作&#xff0c;没时间读书无法读书的理由② 不知应该读什么无法读书的理由③ 没读完的书不断增多无法读书的理由④ 工作繁…

LeetCode面试298,二叉树最长连续序列(Python)

开始想着dfs&#xff0c;两种情况 1.以root为根 2.不以root为根 但是这样需要两个dfs分别进行&#xff0c;那么时间复杂度就上去了。 class Solution:def longestConsecutive(self, root: Optional[TreeNode]) -> int:def dfs(root):# 以root为根节点&#xff0c;可以延…

视频素材库在哪里找免费手机版?8个可以用手机浏览的素材网

在视觉内容占据主导地位的今天&#xff0c;合适的视频素材可以大大提升项目的吸引力和效果。以下列出的视频素材网站为广告制作者、社交媒体策略师及电影制作人提供了从传统到现代风格的各种视频素材选择&#xff0c;满足不同的创作需求。 1. 蛙学府&#xff08;中国&#xff…

关系型数据库MySQL开发要点之多表设计案例详解代码实现

什么是多表设计 项目开发中 在进行数据库表结构设计时 根据数据模型和业务关系 会根据业务需求和业务模块之间的关系分析设计表结构 由于业务之间互相关联 所以表结构之间也存在着各种联系 主要分为以下三种 一对多 每个部门下是有多个员工的 但是一个员工只能归属一个部…

Linux —— 信号(3)

Linux —— 信号&#xff08;3&#xff09; Core dump为什么core默认是被关闭的阻塞信号信号其他相关常见概念信号递达信号未决信号阻塞两者的区别信号的结构 信号集操作函数一个简单使用例子sigpending的使用例子 我们今天接着来了解信号&#xff1a; Core dump 大家不知道有…

6.移除元素

文章目录 题目简介题目解答解法一&#xff1a;双指针代码&#xff1a;复杂度分析&#xff1a; 解法二&#xff1a;双指针优化代码&#xff1a;复杂度分析&#xff1a; 题目链接 大家好&#xff0c;我是晓星航。今天为大家带来的是 相关的讲解&#xff01;&#x1f600; 题目简…