在写命令行程序的时候经常需要解析各种命令行参数、打印help信息等,觉得非常的麻烦。今天介绍一种超级棒的命令参数解析的方法:居于LLVM 的命令行参数解析,有了它妈妈再也不用担心我不会解析命令行参数^ _ ^。

一、工程目录结构

二、示例代码
2.1 CMDemo.cpp

1.#include

2.#include

3.#include

4.#include

5.using namespace llvm;

6.

7.static cl::opt<bool> BOOLEAN_ARG("boolean-arg",cl::desc("test boolean arg"),cl::init(false));

8.static cl::opt<int> INT_ARG("int-arg",cl::desc("test integer arg"),cl::init(0));

9.static cl::opt<std::string> STRING_ARG("string-arg",cl::desc("string arg"),cl::value_desc("test string arg"),cl::init(""));

10.

11.int main(int argc, char **argv){

12.

13. cl::ParseCommandLineOptions(argc,argv,"llvm CommandLine demo\n");

14.

15. std::string string_arg = STRING_ARG;

16. bool boolean_arg = BOOLEAN_ARG;

17. int int_arg = INT_ARG;

18.

19. printf("string_arg:%s \n",string_arg.c_str());

20. printf("boolean_arg:%d \n",boolean_arg);

21. printf("int_arg:%d\n",int_arg);

22. return 0;

23.}

2.2 CMakeLists.txt

1.cmake_minimum_required(VERSION 3.11.2) #cmake版本要求

2.

3.project(CMDemo) #项目名称

4.

5.link_libraries(z)

6.link_libraries(curses)

7.link_libraries(pthread)

8.

9.set(CMAKE_CXX_STANDARD 11) #设置C++标准为C++11 LLVM 10 之后要用C++14

10.

11.set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #设置库文件输出到代码源路径下的lib文件夹中;

12.

13.find_package(LLVM REQUIRED CONFIG) #找到LLVM库,REQUIRED表示一定要找到这个库,找不到这个库,编译就直接结束,不再往下进行了

14.

15.llvm_map_components_to_libnames(LLVM_LIBRARIES all) #获取所有的LLVM库名称列表 保存在LLVM_LIBRARIES变量中

16.include_directories(${LLVM_INCLUDE_DIRS}) #设置LLVM库的头文件路径

17.

18.add_compile_options(-fno-rtti) #不用C++ RTTI 不然链接的时候会报错

19.

20.include_directories(${PROJECT_SOURCE_DIR}/include) #设置工程头文件路径

21.

22.

23.add_executable(CMDemo src/CMDemo.cpp)

24.

25.target_link_libraries(CMDemo ${LLVM_LIBRARIES}) #添加依赖库

三、运行效果
3.1 使用帮助

3.2 默认参数

3.3 传递参数

四、总结

主要是调用了LLVM Support库的cl::ParseCommandLineOptions函数对命令行参数进行解析,一行代码就完成了命令行参数解析功能。

3gpp文件头文件解析_居于LLVM 的命令行参数解析相关推荐

  1. 安装rpm包命令_编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出...

    不常用R的朋友,可能并不能意识到好的编辑模板带来的长期效率提高和代码重用性,非计算机专业科研人员且需要使用R语言,此文会对您有帮助. 个人认为:是否能熟悉使用Shell(项目流程搭建)+R(数据统计与 ...

  2. 编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出

    写在前面 个人认为:是否能熟悉使用Shell(项目流程搭建)+R(数据统计与可视化)+Perl/Python等(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准. 之前分享过 ...

  3. python输入正方形边长值、计算其面积_尝试修改列6.2编写命令行参数解析的程序,解析命令行参数所输入边长的值,计算并输出正方形的周长和面积。_学小易找答案...

    [简答题] [单选题]ZigBee 中每个协调点最多可连接______个节点,一个ZigBee网络最多可容纳______个节点.( ) [资料题]DWord-Ans.pdf 索引和目录.pdf 完成效 ...

  4. Python中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  5. python 命令行参数-Python 中最好用的命令行参数解析工具

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要一个命令行参数解析的 ...

  6. GO标准库—命令行参数解析FLAG

    评论有人提到没有例子,不知道讲的是什么.因此,为了大家能够更好地理解,特意加了一个示例.其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了.建议阅读 <Go语言标准 ...

  7. golang flag包(命令行参数解析)

    1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...

  8. Python之命令行参数解析

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解 ...

  9. Python的命令行参数解析

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse.下 ...

最新文章

  1. Sublime Text保存文件时自动去掉行末空格
  2. matlab等距线扫描多边形程序实现_常用的3D扫描仪都有哪些类型?
  3. python excel 操作
  4. spark sql and hive 3g数据测试
  5. 如何使用firefox适用于javascript的debugger命令
  6. dft + fft(模板)
  7. JAVA学习笔记-Scanner的使用
  8. .NET常见错误大全
  9. for循环 与 while循环
  10. 《Android App开发入门:使用Android Studio 2.X开发环境》——2-5 开始动手编写程序...
  11. 开源多语言商城 CMS 企业建站系统,MyCms v3.9 发布
  12. python音乐播放器图片_Python音乐播放器
  13. Kindle、epub 、azw3修改行间距
  14. 【虚拟校园】虚拟学生入学清华,中国传媒大学打造元宇宙大学
  15. IEEE Latex下载
  16. 睡眠多少分钟一个循环_列出正常的睡眠周期及循环时间?
  17. VC++分析数据包实现SMTP协议分析
  18. (usb转串口)CH340驱动安装失败的解决方案
  19. vue3+vite环境搭建 vue3+vite实战
  20. verilog的免费编译器

热门文章

  1. 开源(Open Source)那些事儿 (一)
  2. Unity制作的 安卓和Ios程序如何退出
  3. request threaded-only IRQs with IRQF_ONESHOT【转】
  4. MotionEvent的getX(),getY()与getRawX(),getRawY()区别
  5. Crypto API
  6. Introduction to Objects
  7. 《Go语言从入门到实战》学习笔记(2)——编写第一个Go语言程序
  8. 2021年你不能错过的DevOps趋势
  9. java双重检查锁单例真的线程安全吗?
  10. 一不小心肝出了4W字的Redis面试教程