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*
传递给构造函数。