cmake学习【function】

发布时间:2023年12月23日

cmake学些function

在CMake中,function命令用于定义函数,允许你封装一段逻辑,使其在多个地方重复使用。以下是function命令的主要用法及其参数,以及一些示例说明:

1. 基本语法

function(functionName [arg1 [arg2 ...]])
    # 函数体
endfunction()
  • functionName: 函数的名称。
  • arg1 [arg2 ...]: 函数的参数。

2. 示例:简单的函数

function(say_hello name)
    message(STATUS "Hello, ${name}!")
endfunction()

# 调用函数
say_hello("John")

3. 示例:带返回值的函数

function(add_numbers a b result)
    math(EXPR ${result} "${a} + ${b}")
endfunction()

# 调用函数
add_numbers(2 3 sum)
message(STATUS "Sum: ${sum}")

4. 示例:带默认参数的函数

function(print_message messageType message)
    if(NOT messageType)
        set(messageType "INFO")
    endif()
    message(${messageType} "${message}")
endfunction()

# 调用函数
print_message("Hello, CMake!")  # 默认为 INFO 类型
print_message(WARNING "This is a warning.")

5. 示例:函数中使用全局变量

set(globalVar "Global Variable")

function(print_global_variable)
    message(STATUS "Global Variable: ${globalVar}")
endfunction()

# 调用函数
print_global_variable()

6. 示例:函数中调用其他函数

function(greet_person name)
    say_hello(${name})
endfunction()

# 调用函数
greet_person("Alice")

7. 示例:递归函数

function(factorial n result)
    if(${n} LESS 2)
        set(${result} 1)
    else()
        math(EXPR new_n "${n} - 1")
        factorial(${new_n} sub_result)
        math(EXPR ${result} "${n} * ${sub_result}")
    endif()
endfunction()

# 调用函数
factorial(5 answer)
message(STATUS "Factorial of 5: ${answer}")

这些示例涵盖了function命令的一些基本用法,包括带参数、默认参数、返回值、全局变量的使用,以及函数的递归调用。在实际项目中,函数通常用于封装可重复使用的逻辑,提高CMake脚本的可维护性。

文章来源:https://blog.csdn.net/weixin_43739167/article/details/135156881
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。