> 文章列表 > LLVM学习笔记CommandLine

LLVM学习笔记CommandLine

LLVM学习笔记CommandLine

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