cmake:cmake_parse_arguments 傷城~ 2022-10-11 13:46 186阅读 0赞 ## cmake\_parse\_arguments ## 解析函数或宏参数。 cmake_parse_arguments(<prefix> <options> <one_value_keywords> <multi_value_keywords> <args>...) cmake_parse_arguments(PARSE_ARGV <N> <prefix> <options> <one_value_keywords> <multi_value_keywords>) 3.5新版功能:这个命令是本地实现的。以前,它在模块CMakeParseArguments中定义。 此命令用于宏或函数中。它处理给出给该宏或函数的参数,并定义一组变量,其中包含各个选项的值。 * 第一个签名读取在< args>…中传递的参数,读到的参数可用于宏()或者函数() * 3.7新版功能:PARSE\_ARGV签名只用于function()函数体。在本例中,解析的参数来自调用函数的`argv#`变量。解析从`<N>-`第一个参数开始,其中`<N>`是一个无符号整数。这允许值具有特殊字符,如; * < options>参数包含相应宏的所有选项,即在调用宏时可以使用的关键字,而不需要下面的任何值,例如install()命令的可选关键字 考虑下面的示例宏my\_install(),它的参数与实际的install()命令类似: macro(my_install) set(options OPTIONAL FAST) set(oneValueArgs DESTINATION RENAME) set(multiValueArgs TARGETS CONFIGURATIONS) cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ ARGN} ) # ... 假设my\_install()被这样调用: my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub CONFIGURATIONS) 在cmake\_parse\_arguments调用后,宏将设置或未定义以下变量: MY_INSTALL_OPTIONAL = TRUE MY_INSTALL_FAST = FALSE # was not used in call to my_install MY_INSTALL_DESTINATION = "bin" MY_INSTALL_RENAME <UNDEFINED> # was not used MY_INSTALL_TARGETS = "foo;bar" MY_INSTALL_CONFIGURATIONS <UNDEFINED> # was not used MY_INSTALL_UNPARSED_ARGUMENTS = "blub" # nothing expected after "OPTIONAL" MY_INSTALL_KEYWORDS_MISSING_VALUES = "CONFIGURATIONS" # No value for "CONFIGURATIONS" given 然后可以继续处理这些变量。 关键字会终止值列表,例如,如果一个one\_value\_keyword后面跟着另一个已识别的关键字,则这被解释为新选项的开始。例如my\_install(TARGETS foo DESTINATION OPTIONAL)将导致MY\_INSTALL\_DESTINATION设置为"OPTIONAL",但由于可选是一个关键字本身,MY\_INSTALL\_DESTINATION将为空(但添加到MY\_INSTALL\_KEYWORDS\_MISSING\_VALUES中),因此MY\_INSTALL\_OPTIONAL将被设置为TRUE。
还没有评论,来说两句吧...