一. 简介
前面给大家介绍函数的时候提到过,cmake 中函数也可以有返回值,但是不能通过 return()命令来实现。
由于当时没介绍 PARENT_SCOPE,所以没法给大家讲解如何去实返回值,现在我们已经知道了 PARENT_SCOPE 选项的作用,其实就是通过这个选项来实现函数的返回值功能。
准备一个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
便
可以打印出该变量,因为这个变量在源码中定义了。