cmake进阶:函数的返回值如何实现?

一.  简介

前面给大家介绍函数的时候提到过,cmake 中函数也可以有返回值,但是不能通过 return()命令来实现。
由于当时没介绍 PARENT_SCOPE,所以没法给大家讲解如何去实返回值,现在我们已经知道了 PARENT_SCOPE 选项的作用,其实就是通过这个选项来实现函数的返回值功能。

二.  cmake进阶:函数的返回值如何实现?

准备一个C工程(ubuntu系统下的),假如工程的顶层 CMakeLists.txt文件中代码如下:

# 顶层 CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(TEST)

# 定义一个函数 xyz
# 实现两个数相加,并将结果通过 out 参数返回给调用者
function(xyz out var1 var2)
 math(EXPR temp "${var1} + ${var2}")
 set(${out} ${temp} PARENT_SCOPE)
endfunction()

xyz(out_var 5 10)
message("${out_var}")

进入 build目录下,执行 "cmake .."命令后,打印信息如下:

看到这里不知道大家明白了没,其实很简单。
调用 xyz()函数时,传入的 out_var 是作为一个参数传入进去的,而不是变量名。但现在需要将其变成一个变量名,怎么做呢?

那就是在函数中获取参数 out 的值,将 参数 out 的值作为变量名。 然后用 set 创建该变量,并添加了 PARENT_SCOPE 选项。
所以通过 message 便 可以打印出该变量,因为这个变量在源码中定义了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值