调用CMake函数:参数数
有一个名为调用CMake函数:参数数,cmake,Cmake,有一个名为myfunc的函数定义为 function (myfunc var1 var2 var3) ... endfunction() 然后,我看到一个函数调用 myfunc(custom hahaha platform ALL COMMAND echo "hello world" SOURCES ${some_var} ) 我的问题是 函数myfunc包含3个变量在上述函数调用中,哪三个变量?另外,在函数调用中如何有额外的命令COMMAND和源? 3个变量
myfunc
的函数定义为
function (myfunc var1 var2 var3)
...
endfunction()
然后,我看到一个函数调用
myfunc(custom hahaha platform ALL
COMMAND echo "hello world"
SOURCES ${some_var} )
我的问题是
函数myfunc
包含3个变量在上述函数调用中,哪三个变量?另外,在函数调用中如何有额外的命令COMMAND
和源
?
3个变量将是前3个参数 如果您的函数定义如下:
function (myfunc var1 var2 var3)
message ("var1: ${var1}")
message ("var2: ${var2}")
message ("var3: ${var3}")
message ("number of arguments sent to function: ${ARGC}")
message ("all function arguments: ${ARGV}")
message ("all arguments beyond defined: ${ARGN}")
endfunction()
在按照您所说的方式调用之后:
set (some_var "some var")
myfunc(custom hahaha platform ALL
COMMAND echo "hello world"
SOURCES ${some_var} )
输出将是:
var1: custom
var2: hahaha
var3: platform
number of arguments sent to function: 9
all function arguments: custom;hahaha;platform;ALL;COMMAND;echo;hello world;SOURCES;some var
all arguments beyond defined: ALL;COMMAND;echo;hello world;SOURCES;some var
因此,您使用9个参数调用了函数,这些参数用${ARGV}
引用,所有未定义的参数也可以用变量${ARGN}
引用
请注意,调用函数时,ALL、COMMAND和SOURCES只是函数的参数,而不是其他参数
最后,这里是关于的完整文档。3个变量将是前3个参数 如果您的函数定义如下:
function (myfunc var1 var2 var3)
message ("var1: ${var1}")
message ("var2: ${var2}")
message ("var3: ${var3}")
message ("number of arguments sent to function: ${ARGC}")
message ("all function arguments: ${ARGV}")
message ("all arguments beyond defined: ${ARGN}")
endfunction()
在按照您所说的方式调用之后:
set (some_var "some var")
myfunc(custom hahaha platform ALL
COMMAND echo "hello world"
SOURCES ${some_var} )
输出将是:
var1: custom
var2: hahaha
var3: platform
number of arguments sent to function: 9
all function arguments: custom;hahaha;platform;ALL;COMMAND;echo;hello world;SOURCES;some var
all arguments beyond defined: ALL;COMMAND;echo;hello world;SOURCES;some var
因此,您使用9个参数调用了函数,这些参数用${ARGV}
引用,所有未定义的参数也可以用变量${ARGN}
引用
请注意,调用函数时,ALL、COMMAND和SOURCES只是函数的参数,而不是其他参数
最后,这里是关于的完整文档,作为对答案的补充,您可能还对命令感兴趣
它允许您为函数定义命名参数,如COMMAND…
和WORKING\u DIRECTORY…
中的add\u custom\u COMMAND
。请参阅文档页面中的示例。为了补充答案,您可能还对命令感兴趣
它允许您为函数定义命名参数,如COMMAND…
和WORKING\u DIRECTORY…
中的add\u custom\u COMMAND
。请参见文档页面中的示例