cmake学习之- cmake_parse_arguments

  • 最后更新: 2019-06-08

一、指令介绍

cmake_parse_arguments 为解析函数(function)或 宏(macros) 参数的命令;


cmake_parse_arguments(  
                       ...)


cmake_parse_arguments(PARSE_ARGV   
                       )

1.1 参数解析

  1. : 可选值
    • 此处包含可选项的变量名称, 对应的值为 TRUEFALSE;
    • 如果传递进来的参数包含此变量,则为 TRUE 反之为 FALSE

  2. : 单值关键词列表
    • 每个关键词仅仅对应一个值

  3. : 多值关键词列表
    • 每个关键词可对应多个值

  4. ... 参数, 一般传入 ${ARGN} 即可

  5. 前缀, 解析出的参数都会按照 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

....

二、其他

_UNPARSED_ARGUMENTS: 表示未被使用的参数变量( ${ARGN}里面)

_KEYWORDS_MISSING_VALUES:定义了关键词,但是没有对应的值

你可能感兴趣的:(cmake学习之- cmake_parse_arguments)