CMake基础教程(34)cmake_parse_arguments解析函数或者宏的参数
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake基础教程(34)cmake_parse_arguments解析函数或者宏的参数相关的知识,希望对你有一定的参考价值。
文章目录
一、指令介绍
cmake_parse_arguments 用解析函数(function)或 宏(macros)的输入参数,得到形式为<prefix>_xxx
的变量。
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>)
1.1 参数解析
<options>: 可选值
此处包含可选项的变量名称, 对应的值为 TRUE 或 FALSE;
如果传递进来的参数包含此变量,则为 TRUE 反之为 FALSE
<one_value_keywords>: 单值关键词列表
每个关键词仅仅对应一个值
<multi_value_keywords>: 多值关键词列表
每个关键词可对应多个值
<args>… 参数, 一般传入 $ARGN 即可
<prefix>前缀, 解析出的参数都会按照 prefix_参数名的形式形成新的变量;
1.2 Coding
cmake_minimum_required(VERSION 3.5)
project(PARSE)
function(MY_PARSE)
set(options ADULT)
set(oneValueArgs NAME AGE)
set(multiValueArgs SCORE)
cmake_parse_arguments(STUDENT "$options" "$oneValueArgs" "$multiValueArgs" $ARGN )
# 通过 prefix_参数名: 例如 STUDENT_ADULT
message("isadult = $STUDENT_ADULT")
message("name = $STUDENT_NAME")
message("age = $STUDENT_AGE")
message("score = $STUDENT_SCORE")
endfunction()
MY_PARSE(ADULT NAME zhangsan AGE 20 SCORE 100 200 300 400 500)
add_executable(DEMO main.cpp)
运行结果
rs:cmake-parse-arguments$ cmake ./
....
isadult = TRUE
name = zhangsan
age = 20
score = 100;200;300;400;500
二、其他
<prefix>_UNPARSED_ARGUMENTS
: 表示未被使用的参数变量( $ARGN里面)
<prefix>_KEYWORDS_MISSING_VALUES
:定义了关键词,但是没有对应的值
以上是关于CMake基础教程(34)cmake_parse_arguments解析函数或者宏的参数的主要内容,如果未能解决你的问题,请参考以下文章