• 最后更新: 2019-06-08

一、指令介绍

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


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 参数解析

  1. <options>: 可选值

    • 此处包含可选项的变量名称, 对应的值为 TRUEFALSE;
    • 如果传递进来的参数包含此变量,则为 TRUE 反之为 FALSE
  2. <one_value_keywords>: 单值关键词列表

    • 每个关键词仅仅对应一个值
  3. <multi_value_keywords>: 多值关键词列表

    • 每个关键词可对应多个值
  4. <args>... 参数, 一般传入 ${ARGN} 即可

  5. <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学习之- cmake_parse_arguments的更多相关文章

  1. CMake学习(1)---简单程序与库

    cmake是linux平台下重要的工具,可以方便的组织makefile.之前一直在windows平台下进行软件开发,在vs2010的IDE里,只要一点run程序就能跑出结果.但是程序的编译并没有那么简 ...

  2. cmake学习笔记(五)

    在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...

  3. cmake 学习笔记(三)

    转自:http://blog.csdn.net/dbzhang800/article/details/6329314 接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cma ...

  4. cmake 学习笔记(二)

    在 Cmake学习笔记一 中通过一串小例子简单学习了cmake 的使用方式. 这次应该简单看看语法和常用的命令了. 简单的语法 注释 # 我是注释 命令语法 COMMAND(参数1 参数2 ...) ...

  5. CMake学习

    CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用. 作者:AlphaGL.版权所有,欢迎保留原文链接进行转载 :) 本文目录如下: 1.CMake介绍 2.CMake安装与使用 2 ...

  6. cmake 学习笔记(三) (转)

    接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cmake 的使用. 学习一下cmake的 finder. finder是神马东西? 当编译一个需要使用第三方库的软件时,我 ...

  7. CMake学习笔记四:usb_cam的CMakeLists解析

    最近在学习cmake,在完整看了<cmake实践>一书后,跟着书上例程敲了跑了一遍,也写了几篇相关读书笔记,算是勉强基本入门了.所以找了usb_cam软件包的CMakeLists.txt来 ...

  8. cmake学习资料收集

    CMake 学习笔记 : https://www.jianshu.com/p/c417e4ab8b30

  9. cmake 学习笔记(六)

    希望这是现阶段阻碍阅读shiboken和PySide源码的涉及cmake的最后一个障碍 ^ _^ 学习 cmake 的单元测试部分 ctest. 简单使用 最简单的使用ctest的方法,就是在 CMa ...

随机推荐

  1. 检测字符串当中x与o的数目是否相等

    题目如上 答案 function XO(str) { var arr = str.split(""), xCount = , oCount = ; var reX = /x/i, ...

  2. webpack最佳入门实践系列(2)

    3.插件 在前端迅速发展的今天,许多没有太多技术含量并且感觉是在浪费时间的事情,就可以交给构建工具来做,例如:我们去手动创建index.html,手动引入打包好的js文件等操作,都可以叫个webpac ...

  3. Http 请求头 Range

    HTTP 请求头 Range 请求资源的部分内容(不包括响应头的大小),单位是byte,即字节,从0开始. 如果服务器能够正常响应的话,服务器会返回 206 Partial Content 的状态码及 ...

  4. 多核cpu的特殊中断

    cpu可以向其他cpu发送中断,也可以向单独某一个cpu发送中断 每个 cpu 都有一个时钟中断源

  5. Zookeeper如何从官网下载和安装

    打开百度搜索,输入Zookeeper关键词,一般第一条搜索记录就是apache官网下载的地址 进入apache官网,由于是国外的网站,里面内容都是英文的,可以大概看下Zookeeper的描述和介绍,在 ...

  6. python字符串加密与反解密

    在生产中会遇到很多情况是需要加密字符串的(如访问或存储密码)这些需求造就了需要字符串加密,以及反解密的问题,推荐两种方法来实现,下附代码: #!/usr/bin/env python3 # -*- c ...

  7. Python_代码练习_写一个判断是否为小数的函数

    这两天在学习函数,练习写一个判断是否为小数的函数,看起来蛮简单的,飞速写完很是得意,然后测了一下,发现差得好多呀,这个并不像想象那样简单,我得到的教训是,想要把一个需求哪怕再小的需求考虑周全,都不是件 ...

  8. 转载——C# 6.0可能的新特性及C#发展历程

    据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework ...

  9. html5手机返回按钮跳转到指定页面问题

    最近在做活动的时候有一个这样的场景,在主页面点击跳出一个弹层表单,填写完信息后,点击确认跳转到指定的展示页面了.这时候在手机端点击浏览器自带的返回按钮后,回到主页面,这时候主页面无法刷新,弹层信息还在 ...

  10. Android学习--持久化(二) SharedPreferences

    SharedPreferences SharedPreferences 也是通过一个简单的Demo来理解SharedPreferences我们该怎么用,说说自己站在一个iOS开发的角度来看这个Shar ...