libgit2 - c: 我怎么知道正在使用哪个版本
libgit2 - c: how can I tell which version is being used
我正在编写一个使用 libgit2 的应用程序:
https://github.com/eantoranz/gitmod
有时我正在使用 types.h:
中定义的枚举值
但我刚刚注意到在以前的版本中它被称为GIT_OBJ_TREE:
问题是,我怎么知道正在使用哪个版本的 libgit2?我虽然也许有一个定义的值,我可以使用它,然后使用类似的东西:
#ifdef GIT2_0_28
// use GIT_OBJECT_TREE
#else
// use GIT_OBJ_TREE
#endif
但我没有看到类似的东西。我还能使用什么技巧?
最终使用了来自 https://github.com/libgit2/libgit2/blob/v0.28.0/include/git2/version.h 的东西。
在我的文件中:
#if LIBGIT2_SOVERSION < 28 // old implementation
#define GIT2_OBJECT_TREE GIT_OBJ_TREE
#else // new implementation
#define GIT2_OBJECT_TREE GIT_OBJECT_TREE
#endif
然后在我的代码中使用 GIT2_OBJECT_TREE
。
将把这个标记为答案,直到出现更好(更简单)的答案。
如果你想识别 libgit2 的版本,那么我不会使用 LIBGIT_SOVERSION
, since that's a string that defines the "so-version",它是 ABI 版本,而不是 API 版本。而且它是一个字符串,这使它变得复杂测试。
我会查看 major/minor/teeny 版本号,它们绝对是整数。
#if LIBGIT2_VER_MAJOR == 0 && LIBGIT2_VER_MINOR < 28
# ...
#endif
但在这种情况下,我根本不会看 API 版本 - 你不需要看。
如果您确实想要针对 0.28 之前的版本和更高版本,那么只需使用 GIT_OBJ_TREE
。虽然 GIT_OBJ_TREE
已被弃用,但它仍然作为 libgit2 的 safe deprecation layer 的一部分可用,默认情况下启用。
它最早要到 libgit2 v2.0 才会被删除。
我正在编写一个使用 libgit2 的应用程序:
https://github.com/eantoranz/gitmod
有时我正在使用 types.h:
中定义的枚举值但我刚刚注意到在以前的版本中它被称为GIT_OBJ_TREE:
问题是,我怎么知道正在使用哪个版本的 libgit2?我虽然也许有一个定义的值,我可以使用它,然后使用类似的东西:
#ifdef GIT2_0_28
// use GIT_OBJECT_TREE
#else
// use GIT_OBJ_TREE
#endif
但我没有看到类似的东西。我还能使用什么技巧?
最终使用了来自 https://github.com/libgit2/libgit2/blob/v0.28.0/include/git2/version.h 的东西。
在我的文件中:
#if LIBGIT2_SOVERSION < 28 // old implementation
#define GIT2_OBJECT_TREE GIT_OBJ_TREE
#else // new implementation
#define GIT2_OBJECT_TREE GIT_OBJECT_TREE
#endif
然后在我的代码中使用 GIT2_OBJECT_TREE
。
将把这个标记为答案,直到出现更好(更简单)的答案。
如果你想识别 libgit2 的版本,那么我不会使用 LIBGIT_SOVERSION
, since that's a string that defines the "so-version",它是 ABI 版本,而不是 API 版本。而且它是一个字符串,这使它变得复杂测试。
我会查看 major/minor/teeny 版本号,它们绝对是整数。
#if LIBGIT2_VER_MAJOR == 0 && LIBGIT2_VER_MINOR < 28
# ...
#endif
但在这种情况下,我根本不会看 API 版本 - 你不需要看。
如果您确实想要针对 0.28 之前的版本和更高版本,那么只需使用 GIT_OBJ_TREE
。虽然 GIT_OBJ_TREE
已被弃用,但它仍然作为 libgit2 的 safe deprecation layer 的一部分可用,默认情况下启用。
它最早要到 libgit2 v2.0 才会被删除。