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

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

>使用git submodule.
>使用git subtree.
>将当前(2.22.6)快照的源导入我自己的git存储库.
>仅导入getopt.c,getopt1.c和gnugetopt.h的getopt_long()源文件.

1和2的优点是我跟踪getopt_long(). 3和4的优点是,如果getopt_long()的git存储库移动,它将不会破坏我的存储库,它更容易做到.

有没有推荐的“GNU方式”来做到这一点?

最佳答案 经过一段时间的Googl’ing,我找到了
the official GNU answer.

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

使用Gnulib(“新”方式)

使用gnulib-tool命令,通过对一个configure.ac和Makefile.am文件进行一些调整,导入ge​​topt将其编译为GNU库的子集.

使用getopt_long源(“旧”方式)

导入getopt.c,getopt1.c和gnugetopt.h的getopt_long源,并使用adl_func_getopt_long.m4宏测试平台上是否存在getopt_long,并仅在必要时编译导入的源.

点赞