OCaml Cmdliner非标准参数

OCaml Cmdliner非标准参数,ocaml,Ocaml,我正在用Cmdliner制作一个OCaml编译器前端,我想复制一些Clang的行为,比如-emit llvm选项。目前我得到的代码是: (* Whether to generate LLVM (IR or bitcode) output. *) let llvm = let doc = "In conjunction with -S or -c, generate LLVM output instead of native output. For an objec

我正在用Cmdliner制作一个OCaml编译器前端,我想复制一些Clang的行为,比如-emit llvm选项。目前我得到的代码是:

(* Whether to generate LLVM (IR or bitcode) output. *)
let llvm =
  let doc = "In conjunction with -S or -c, generate LLVM output instead of
             native output.  For an object file, this means LLVM bitcode (.bc)
             will be generated, and for assembly it will be LLVM IR (.ll)."
  in
  let emit_llvm = Arg.info ["emit-llvm"] ~doc in
  Arg.(value & flag emit_llvm)
这将创建带有2个前导破折号的emit llvm选项,但不清楚如何仅使用1个。这可能吗?

根据,长度为1的字符串用一个破折号映射到短选项,其他字符串用两个破折号映射到长选项。因此,从cmdliner.1.0.2开始,这是不可能的。

根据,长度为1的字符串映射到带有单破折号的短选项,而其他字符串映射到带有两个破折号的长选项。因此,从cmdliner.1.0.2开始,这是不可能的。

因为cmdliner可以解析短标志组,如tar-xvf所示,因此结尾会变得太模糊。此外,遵循GNU的Cmdliner确实要求长选项使用两个破折号

但是,您可以做的是使用Sys.argv并修补一组您可能识别的单破折号选项,方法是在通过可选的argv参数明确给出结果之前使用单破折号对其进行预处理。

由于Cmdliner可以解析短标志组Δla tar-xvf,因此这一操作的结尾将变得过于模糊。此外,遵循GNU的Cmdliner确实要求长选项使用两个破折号


但是,您可以使用Sys.argv并修补您可能识别的一组单破折号选项,方法是在通过可选的argv参数明确给出结果之前先使用单破折号对其进行预处理。

我认为Cmdliner使用单破折号作为短选项,其中仅包含一个字符,而使用双破折号作为长选项选项。所以这可能是不可能的。我认为Cmdliner使用单破折号表示仅由一个字符组成的短选项,使用双破折号表示长选项。所以这可能是不可能的。这就是我要做的。打得好,这就是我要做的。好电话。