将 getopt_long() 与我自己的代码捆绑在一起?

Bundling getopt_long() with my own code?

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

  1. 使用 git submodule.
  2. 使用 git subtree.
  3. 将当前 (2.22.6) 快照的源导入我自己的 git 存储库。
  4. 导入getopt.cgetopt1.cgnugetopt.hgetopt_long()个源文件。

1和2的优点是我跟踪getopt_long()。 3和4的优点是getopt_long()的git仓库动了,不会破坏我的仓库而且做起来简单多了

有推荐的"GNU way"吗?

经过更多的谷歌搜索,我发现 the official GNU answer

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

使用 Gnulib("new" 方式)

使用 gnulib-tool 命令,通过对 configure.acMakefile.am 文件进行一些调整,导入 getopt 将其编译为 GNU 库的子集.

使用 getopt_long 来源("old" 方式)

导入 getopt.cgetopt1.cgnugetopt.hgetopt_long 源并使用 adl_func_getopt_long.m4 宏来测试 [=14] 是否存在=] 在平台上,仅在必要时编译导入的源代码。