在CMake中,function
命令用于定义函数,允许你封装一段逻辑,使其在多个地方重复使用。以下是function
命令的主要用法及其参数,以及一些示例说明:
function(functionName [arg1 [arg2 ...]])
# 函数体
endfunction()
functionName
: 函数的名称。arg1 [arg2 ...]
: 函数的参数。function(say_hello name)
message(STATUS "Hello, ${name}!")
endfunction()
# 调用函数
say_hello("John")
function(add_numbers a b result)
math(EXPR ${result} "${a} + ${b}")
endfunction()
# 调用函数
add_numbers(2 3 sum)
message(STATUS "Sum: ${sum}")
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.")
set(globalVar "Global Variable")
function(print_global_variable)
message(STATUS "Global Variable: ${globalVar}")
endfunction()
# 调用函数
print_global_variable()
function(greet_person name)
say_hello(${name})
endfunction()
# 调用函数
greet_person("Alice")
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脚本的可维护性。