我正在尝试使用cmake_parse_arguments的函数签名版本来镜像宏的示例:
include(CMakeParseArguments)
set(prefix PREFIX_)
set(${prefix}VAR "foo")
message(DEBUG " value of " "${prefix}VAR" " is " ${${prefix}VAR})
function(func)
set(prefix ARG_)
set(options OPTION)
set(oneValueArgs VALUE)
set(multiValueArgs MULTIVALUE)
cmake_parse_arguments(PARSE_ARGV 0 "${prefix}" "${options}" "${oneValueArgs}" "${multiValueArgs}")
message(DEBUG ${${prefix}UNPARSED_ARGUMENTS})
message(DEBUG ${${prefix}OPTION})
message(DEBUG ${${prefix}VALUE})
message(DEBUG ${${prefix}MULTIVALUE})
endfunction(func)
func(VALUE 42 MULTIVALUE "foo" "bar" "baz")
消息输出为:
DEBUG value of PREFIX_VAR is foo
DEBUG
DEBUG
DEBUG
DEBUG
输出仅是空字符串。发生了什么事?
摘自cmake_parse_arguments
的文档: