建立什么样的网站好,制作网页网站代码,safari网站入口,青岛百度seo代理在 CMake 中#xff0c;function 用于定义一个可复用的代码块#xff0c;可以在 CMake 脚本中多次调用。它类似于其他编程语言中的函数。函数内的变量默认是局部的#xff0c;不会影响外部的变量#xff0c;除非显式地使用 PARENT_SCOPE 来修改父级作用域中的变量。
基本语…在 CMake 中function 用于定义一个可复用的代码块可以在 CMake 脚本中多次调用。它类似于其他编程语言中的函数。函数内的变量默认是局部的不会影响外部的变量除非显式地使用 PARENT_SCOPE 来修改父级作用域中的变量。
基本语法
function(name [arg1 arg2 ...])# Function body
endfunction()name: 函数名。[arg1 arg2 ...]: 函数的参数可以是零个或多个。函数体: 包含要执行的 CMake 命令。
示例 1定义一个简单的函数
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义一个打印消息的函数
function(print_message message)message(STATUS Message: ${message})
endfunction()# 调用函数
print_message(Hello, CMake!)在这个例子中我们定义了一个名为 print_message 的函数它接收一个参数 message然后打印出来。当调用 print_message(Hello, CMake!) 时CMake 会输出 Message: Hello, CMake!。
示例 2函数内修改变量的作用域
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义一个修改变量值的函数
function(change_variable)set(MY_VAR Modified Inside Function)
endfunction()# 调用函数之前
message(STATUS MY_VAR before: ${MY_VAR})# 调用函数
change_variable()# 调用函数之后
message(STATUS MY_VAR after: ${MY_VAR})在这个例子中MY_VAR 在函数内部被修改但由于函数内的变量是局部的函数外部的 MY_VAR 不受影响输出将会是
MY_VAR before:
MY_VAR after: 示例 3使用 PARENT_SCOPE 修改父级作用域中的变量
如果你想在函数内修改外部作用域中的变量可以使用 PARENT_SCOPE
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义一个修改父级作用域中变量的函数
function(change_variable_in_parent_scope)set(MY_VAR Modified in Parent Scope PARENT_SCOPE)
endfunction()# 调用函数之前
message(STATUS MY_VAR before: ${MY_VAR})# 调用函数
change_variable_in_parent_scope()# 调用函数之后
message(STATUS MY_VAR after: ${MY_VAR})在这个例子中函数 change_variable_in_parent_scope 修改了 MY_VAR并使用 PARENT_SCOPE 将更改传递到父级作用域。输出将会是
MY_VAR before:
MY_VAR after: Modified in Parent Scope示例 4函数返回值
CMake 的 function 本身并没有返回值的概念但可以通过设置一个变量来模拟返回值
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义一个模拟返回值的函数
function(get_square value)math(EXPR result ${value} * ${value})set(${ARGV0} ${result} PARENT_SCOPE) # 将结果传递给父级作用域的变量
endfunction()# 调用函数并获取结果
get_square(4 RESULT)# 打印结果
message(STATUS Square of 4 is: ${RESULT})在这个例子中函数 get_square 接收一个数字并计算其平方然后通过 PARENT_SCOPE 将结果返回。结果会被赋值给变量 RESULT并在输出中显示 Square of 4 is: 16。
示例 5函数内的多参数
CMake 的函数可以接收多个参数。你可以通过 ARGN 访问所有的附加参数
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义一个接收多个参数的函数
function(print_all_args)message(STATUS Number of arguments: ${ARGC})foreach(arg IN LISTS ARGN)message(STATUS Argument: ${arg})endforeach()
endfunction()# 调用函数
print_all_args(Hello CMake Function Example)输出会是
Number of arguments: 4
Argument: Hello
Argument: CMake
Argument: Function
Argument: Example小结
基本使用: function 用于定义一个可复用的代码块。变量作用域: 默认情况下函数内部的变量是局部的使用 PARENT_SCOPE 可以将修改传递到父级作用域。返回值模拟: CMake 没有内建的返回值机制但可以通过设置外部变量来实现类似功能。多参数支持: 使用 ARGV0、ARGN 和 ARGC 可以方便地处理多个输入参数。
这些例子涵盖了 CMake 中 function 的常见使用方式。