cmake进阶:定义函数的内部变量

一.  简介

前一篇文章学习 cmake中的定义函数基本用法。文章如下:

cmake进阶:定义函数的使用方法-CSDN博客

本文继续学习 cmake中的定义函数,主要学习函数的内部变量。

二.  cmake进阶:定义函数的内部变量

上一篇文章说过,在 cmake 中,调用函数时,实际传入的参数个数不需要等于函数定义的参数个数(甚至函数定义时,参数个数为 0),但是实际传入的参数个数必须大于或等于函数定义的参数个数。

这种设计有什么用途呢?
这种设计可用于实现可变参函数(与 C 语言中的可变 参数函数概念相同)。
但是有个问题,就如上例中所示,用户传入了 3 个参数,但是函数定义时并没有定义这些形参,函数中如何引用到第二个参数 World 以及第三个参数 China 呢?
其实 cmake 早就为大家考虑到 了,并给出了相应的解决方案,就是接下来向大家介绍的内部变量。

1.  函数的内部变量

function() 函数中可以使用内部变量,所谓函数的内部变量,指的就是在函数内部使用的内置变量
这些内部变量如下所示:

我们可以进行测试:

# function 函数测试
# 函数名: xyz
function(xyz arg1 arg2)message("ARGC: ${ARGC}")message("ARGV: ${ARGV}")message("ARGN: ${ARGN}")message("ARGV0: ${ARGV0}")message("ARGV1: ${ARGV1}")# 循环打印出各个参数set(i 0)foreach(loop ${ARGV})message("arg${i}: " ${loop})math(EXPR i "${i} + 1")endforeach()
endfunction()# 调用函数
xyz(A B C D E F G)

进入 build目录下,运行 "cmake .." 命令后如下:

这个大家自己去对照一下就知道了。

下一篇文章学习 函数的作用域。

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

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

相关文章

Elasticsearch:理解人工智能相似性搜索

理解相似性搜索(也称为语义搜索)的指南,这是人工智能最新阶段的关键发现之一。 最新阶段人工智能的关键发现之一是根据相似性搜索和查找文档的能力。相似性搜索是一种比较信息的方法,其基于含义而非关键字。 相似性搜索也被称为语…

Stable Diffusion学习记录

文章目录 前言电脑配置推荐环境搭建下载地址安装步骤步骤一,打开下载的秋叶整合包,路径秋叶整合包/sd-wenui-aki步骤二,打开下载好的sd-webui-aki-v4.8.7解压包 Stable Diffusion软件配置,插件安装,模型下载Stable Dif…

Codeforces Round 943 (Div. 3) C-G

C. Assembly via Remainders 思路: 我们可以注意到,数组的长度只有 500 500 500 ,并且每个数的大小都在 500 500 500 以内,再看向这题,容易知道,当第一个数确定之后,之后所有的数字都会确定下…

leetcode-没有重复项的全排列-97

题目要求 思路 1.递归,如果num和n的元素个数一样就可以插入res中了,这个作为递归的结束条件 2.因为这个题是属于排列,并非组合,两者的区别是排列需要把之前插入的元素在回退会去,而组合不需要,因此会存在一…

14【PS作图】像素画尺寸大小

【背景介绍】本节介绍像素图多大合适 下图是160*144像素大小,有一个显示文本的显示器,还有一个有十几个键的键盘 像素画布尺寸 电脑16像素,但还有一个显示屏 下图为240*160 在场景素材,和对话素材中,用的是不同尺寸的头像,对话素材中的头像会更清楚,尺寸会更大 远处…

【软考高项】三十三、质量管理

一、管理基础 质量定义 国际标准:反映实体满足主体明确和隐含需求的能力的特性总和。 国家标准:一组固有特性满足要求的程度。固有特性是指在某事或某物中本来就有的,尤其是那种永久的可区分的特征。 ➢ 对产品来说,例如…

查看微信小程序主包大小

前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看

Unity 性能优化之光照优化(七)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、测试目的一、实时光源是什么?二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…

分享一个国内可用的AIGC网站,免费无限制,支持AI绘画

背景 AIGC作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个AI爱好者,翻遍了各大基于AIGC的网站,终于找到一个免费!免登陆!手机电脑通用!国内可直接对话的AIGC&am…

保持亮灯:监控工具如何确保 DevOps 中的高可用性

在快速发展的 DevOps 领域,保持高可用性 (HA) 至关重要。消费者期望应用程序具有全天候响应能力和可访问性。销售损失、客户愤怒和声誉受损都是停机的后果。为了使 DevOps 团队能够在问题升级为中断之前主动检测、排除故障并解决问题,监控工具成为这种情…

nginx--tcp负载均衡

mysql负载均衡 安装mysql yum install -y mariadb-server systemctl start mariadb systemctl enable mariadb ss -ntl创建数据库并授权 MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges o…

设计模式(十一):外观模式

设计模式(十一):外观模式 1. 外观模式的介绍2. 外观模式的类图3. 外观模式的实现3.1 创建一个接口3.2 创建接口的实现3.3 创建一个外观类3.4 测试 1. 外观模式的介绍 外观模式(Facade Pattern)属于结构型模式&#xf…

数据结构与算法之经典排序算法

一、简单排序 在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单按照订单的日期进行排序,再比如查询一些商品,按照商品的价格进行排序等等。所以&a…

IT养生知识之:子午流注

《子午流注口诀》 肺寅大卯胃辰宫, 脾巳心午小未中, 申膀酉肾心包戌, 亥焦子胆丑肝通。 何为子午流注? 子午流注是中医圣贤发现的一种规律,中医认为人体中十二条经脉对应着每日的十二个时辰,由于时辰在…

【Osek网络管理测试】[TG3_TC5]等待总线睡眠状态_1

🙋‍♂️ 【Osek网络管理测试】系列💁‍♂️点击跳转 文章目录 1.环境搭建2.测试目的3.测试步骤4.预期结果5.测试结果 1.环境搭建 硬件:VN1630 软件:CANoe 2.测试目的 验证DUT在满足进入等待睡眠状态的条件时是否进入该状态 …

WP Rocket插件下载:加速您的WordPress网站,提升用户体验

在互联网速度决定用户体验的今天,一个快速加载的网站对于吸引和保留访问者至关重要。WP Rocket插件,作为一款专为WordPress设计的高性能缓存插件,提供了一套完整的解决方案,帮助您优化网站性能,提升用户体验。 [WP Ro…

Django实验(远程访问+图片显示)

众所周知,Python除了不能生孩子什么都会。Python也是可以做web服务的。 Python做web有一个重点优势是:做一个快速的AI Demo。 第一步:安装一个版本5.0以上django 第二步:构建咱们的Django工程,我取名为BBQ django-adm…

【copilot 使用指南 - @workspace】

为什么需要workspace 默认情况下,copilot只能分析当前文件中的代码内容, 那么如何让copliot 跨文件分析,分析整个项目,分析整个代码目录下的代码,就要用到workspace,举例 :假设如下代码 index…

如何使用ArcGIS Pro进行选房分析

无论是研究城市规划布局还是寻找理想的住房,都需要综合考虑购物、医疗、教育和休闲等多方面因素,此时我们的GIS软件就可以派上用场了,这里为大家介绍一下如何使用 ArcGIS Pro 进行选房分析,希望能对你有所帮助。 数据来源 教程所…

解决mac出现npm install 卡在“sill idealTree buildDeps“的问题

问题出现场景: 在新建一个项目尝试npm install命令时,一直卡在“sill idealTree buildDeps“ 尝试过的无效解决方案包括: 切换/关闭梯子重启更换网络更换npm源更新删除 package.json 最终解决方案: 引起问题的原因是MacOS设置中…