调用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
。请参见文档页面中的示例