用我自己的代码捆绑getopt_long()?

时间:2015-07-10 22:45:57

标签: c getopt getopt-long

我在github上有自己的C项目。我想通过使用GNU getopt_long()(它有自己的git存储库)来添加长选项支持。我相信我有四种方法可以做到这一点:

  1. 使用git submodule
  2. 使用git subtree
  3. 将当前(2.22.6)快照的源导入我自己的git存储库。
  4. 仅导入 getopt_long()getopt.cgetopt1.c的{​​{1}}源文件。
  5. 1和2的优点是我跟踪gnugetopt.h。 3和4的优点是,如果getopt_long()的git存储库移动,它将不会破坏我的存储库,这样做更容易。

    是否有推荐的“GNU方式”来执行此操作?

1 个答案:

答案 0 :(得分:2)

经过一段时间的Googl'我发现了the official GNU answer

简而言之,有两种推荐方法:

使用Gnulib("新"方式)

使用gnulib-tool命令,通过对一个getopt和{{1}进行一些调整,导入configure.ac将其编译为GNU库的子集。文件。

使用Makefile.am来源("旧"方式)

导入getopt_longgetopt_longgetopt.c的{​​{1}}来源,并使用getopt1.c宏来测试是否存在gnugetopt.h在平台上,仅在必要时编译导入的源。