我有一个小型C(非C ++)应用程序,使用getopt_long
解析命令行参数。我想编写另一个共享多个元素的应用程序(包括一些常见的命令行参数),但也会有一些独特的东西。作为其中的一部分,我想将命令行解析拆分为通用(在静态库中)和特定于应用程序。
是否有可能以不同的方式将getopt_long
的调用与不同的选项集级联起来,这样如果"外部"呼叫(特定于应用程序的选项)不会识别它可以尝试调用公共选项解析器的选项,而不会向用户打印任何错误,除非两者都不识别该选项?这必须在逐个选项的基础上完成,因为用户可以按任何顺序传递选项。
我喜欢getopt的静态定义的常量选项查找表的简单性。我知道我可以动态地生成一个合并的表,只需调用一次getopt,但这看起来更痛苦,我不想这样做。
到目前为止,我对文档的阅读看起来并不乐观。
答案 0 :(得分:0)
然后我会考虑使用GNU libc的argp API。
可以组合Argp解析器,请参阅the example 4。因此,您可以将公共部分放在一个解析器中(在共享库中),将特定于应用程序的解析器放在另一个解析器中。
或者,也可以考虑Glib(来自GTK,但可以独立使用)及其command line option parsing(因为GOptionContext
- s可以包含多个GOptionGroup
- s {{3 }})...)