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脚本的可维护性。