LLVM学习笔记CommandLine

news/2024/7/3 13:50:49 标签: llvm

LLVM学习笔记----CommandLine

cl::opt

cl::opt是用来表示标量命令行选项的类,也是最常使用的类。它是一个模板类,最多可以接受三个参数(除了第一个参数外,所有参数都有默认值):

namespace cl {
  template <class DataType, bool ExternalStorage = false,
            class ParserClass = parser<DataType> >
  class opt;
}
  • 参数详解:

    • 第一个模板参数指定命令行参数的基础数据类型,并用于选择默认的解析器实现。
    • 第二个模板参数用于指定选项是否应包含选项的存储(默认值)或是否应使用外部存储来包含为选项解析的值。
    • 第三个模板参数指定要使用的解析器。parser默认值根据选项的基础数据类型选择类的实例化。通常,此默认值适用于大多数应用程序,因此此选项仅在使用自定义解析器时使用。第三个模板参数指定要使用的解析器。parser默认值根据选项的基础数据类型选择类的实例化。通常,此默认值适用于大多数应用程序,因此此选项仅在使用自定义解析器时使用。
    eg:
    
    1.	cl::opt<string> InputFilename(cl::Positional, cl::desc("<input file>"), cl::init("-"));
    //cl::Positional:第一个位置参数应被视为输入文件名。
    // cl::desc("<input file>"):解释说明作用,用于指定“ -help”选项输出的内容。
    //cl::init("-"):为命令行选项指定一个初始值,如果未指定选项则使用该初始值
    
    2.	cl::opt<string> OutputFilename("o", cl::desc("Specify output filename"), cl::value_desc("filename"));
    //这声明了一个全局变量“ OutputFilename”,用于捕获“ o”参数(第一个参数)的结果。
    //命令行表示如下   -o <filename>
    //we would like to support the Unix-standard ‘-o <filename>’ option to specify where to put the output.
    
class cl::list

该类是用于表示命令行选项列表的类。它也是一个模板类,最多可以接受三个参数:

namespace cl {
  template <class DataType, class Storage = bool,
            class ParserClass = parser<DataType> >
  class list;
}
  • 参数详解:此类与cl::opt类的工作方式完全相同,除了第二个参数是外部存储的类型,而不是bool。对于此类,标记类型“ bool”用于指示应使用内部存储。
class cl::bits

cl::bits是用于以位向量的形式表示命令行选项列表的类。它也是一个模板类,最多可以接受三个参数:

namespace cl {
  template <class DataType, class Storage = bool,
            class ParserClass = parser<DataType> >
  class bits;
}
  • 参数详解:此类的工作方式与cl::list类完全相同,除了如果使用外部存储,第二个参数必须是 unsigned类型。
class cl::alias

cl::alias是一个非模板类,用于为其他参数形成别名。

namespace cl {
  class alias;
}
  • 参数详解:cl::aliasopt属性应该用于指定这是哪个选项的别名。别名参数默认为cl::Hidden,并使用别名选项解析器进行从字符串到数据的转换。cl ::aliasopt属性指定cl::alias选项是哪个选项的别名。cl::Hidden修饰符(这是cl::alias选项的默认值)指示该选项不应出现在输出中-help,但应该出现在-help-hidden输出中。
class::extrahelp

cl::extrahelp是一个非模板化类,它允许为该选项打印出额外的帮助文本-help

namespace cl {
  struct extrahelp;
}
  • 参数详解:要使用 extrahelp,只需构造一个带有构造函数参数的帮助。传递给构造函数的文本将逐字打印在帮助消息的底部。请注意,可以使用多个,但不鼓励这种做法。如果您的工具需要打印额外的帮助信息,请将所有帮助信息放入一个 实例中。const char*``cl::extrahelp cl::extrahelp

例如:

cl::extrahelp("\nADDITIONAL HELP:\n\n  This is the extra help\n");
cl::OptionCategory

cl::OptionCategory是一个用于声明选项类别的简单类。

namespace cl {
  class OptionCategory;
}
  • 参数详解:选项类别必须有一个名称和一个可选的描述,这些描述将作为const char*传递给构造函数。

http://www.niftyadmin.cn/n/202149.html

相关文章

体验 epinio

体验 epinioepinio 概述官网地址安装 Epinio CLI安装 Epinio配置 /etc/hosts访问 Epinio使用 Epinio 发布示例应用到 Kubernetes访问示例应用访问 Epinio 控制台通过 Epinio 控制台部署示例应用访问 Epinio 控制台部署部署 Epinio Catalog 里面自带的 Service清除epinio 概述 …

java cookie使用方法

简介&#xff1a; java cookie使用方法&#xff0c;封装工具类使用 代码示例&#xff1a; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Cookie工具类*/ public class CookieUtil …

自定义日志注解,保存信息到数据库

定义日志注解 import java.lang.annotation.*;/*** author wzw* version 1.0* Date 2023-2-17 17:31:19*/ Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface Log {/*** 描述* return*/String desc();boolean isSaveLog() defaul…

【rt-thread网络】第3篇:mqtt加密通信

一、ssl/tls协议 二、mosquitto添加broker证书 # MQTT协议端口号 listener 1883 protocol mqtt# 订阅主题持久化 persistence true persistence_location D:\software\mosquitto\data# 开启日志记录 log_dest file D:\software\mosquitto\mosquitto.log log_type all# 开启密…

数据共享交换平台解决方案

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除 一.1 术语介绍 &#xff08;1&#xff09;企业基础信息 工商、国税、地税、质监等部门涉及到企业注册登记、变更、注&#xff08;吊&#xff09;销、年检、税务登记、组织机构代…

通过javassist操作字节码实现MyBatis动态生成DAO的实现类功能

文章目录说明注意准备MyBatisGenerateDaoProxy工具模拟测试代码参考&#xff1a;说明 实践通过javassist方式实现mybatis通过接口操作数据增删改查的原理实现。在MyBatis框架中我们可以直接通过Dao接口和XML直接操作&#xff0c;而并没有具体的实现类&#xff0c;那么这个的原…

问卷调查怎么帮助餐饮行业?

在餐饮行业中&#xff0c;顾客的口碑占据非常重要的地位&#xff0c;直接影响着门店的销售额。好口碑能一传十、十传百&#xff0c;为门店带来持续不断的流量和收益。所以&#xff0c;在顾客体验这一块&#xff0c;餐饮门店要尤为重视。 某餐饮品牌作为全球知名品牌&#xff0…

0059__Linux进程间通信(九)——信号量

Linux进程间通信&#xff08;九&#xff09;——信号量_sem_post_天山老妖的博客-CSDN博客