【问题标题】:How can one compile libgit2 into an OSX Application Bundle?如何将 libgit2 编译成 OSX 应用程序包?
【发布时间】:2013-03-25 15:34:00
【问题描述】:

OSX 对 Window 的 .DLL 文件的回答是一个“捆绑包”,或者我一直在阅读,但我不太清楚如何开始将 libgit2 构建成可用的东西。

我通常在 Windows 上工作,并且正在开发一组将在 Unity3D 中使用的插件。到目前为止,插件采用 Windows .DLL 文件的形式。但是,在 Mac 上使用 Unity3D 工作的开发人员无法使用该插件,因为它依赖于构建为 libgit2's git2.dll 的本机代码。

根据 Unity3D 在 Building Plugins for Desktop Platforms 上的文档,我需要以某种方式构建原生 bundle。说明指向使用 XCode 执行设置捆绑项目的任务,但是在如何构建它时我似乎迷失了方向。

根据 libgit2 项目页面上的文档,我可以使用 CMake GUI 实用程序来

[...]生成平台特定的构建项目或 IDE 工作区

但是,生成的 XCode 项目似乎不是 bundle project,而是某种其他类型的项目,至少就我的目的而言,它会构建“垃圾文件”。

Unity3D 描述的捆绑包的预期格式是什么?

我怎样才能'Mix-n-Match',从而我可以构建一个 XCode 捆绑项目,只需从项目的 libgit2 存储库中的某个地方删除所需的文件,然后点击构建以获得请求的格式我之前的问题?

【问题讨论】:

  • 您现在正在构建 Mac .dylib 吗?您提到 Mac 用户不能使用 git2.dll - 这当然是真的,您需要先构建一个 Mac 共享库。
  • 我不确定从 CMake 生成的默认 XCode 项目文件中构建的确切内容,因为它似乎都是垃圾。我会尝试筛选并查看某处是否有.dylib。如果我能找到它,我可以将其重命名为 .bundleper this post 并使用它。
  • 有。 libgit2.dylib 应该在你的构建目录中生成。
  • 您是否使用 XCode 的默认 CMake 构建对其进行了测试?抱歉,我的 VNC 被锁定,我被困在工作中,目前无法查看。如果您已经构建了默认设置,并查看了 .dylib,请务必发布您的答案,以便我将其标记为已解决。

标签: macos unity3d libgit2


【解决方案1】:

Windows 上的 DLL 是一个动态库,类似于 Mac OS 上的 .dylib。 CMake 规则将在 Mac OS 上创建一个.dylib

使用默认的 gcc 目标:

% git clone https://github.com/libgit2/libgit2
% cd libgit2
% mkdir build
% cd build
% cmake ..
% make -j8
% ls -Flas libgit2*.dylib
1348 -rwxr-xr-x  1 ethomson  staff  1379120 Apr  3 16:55 libgit2.0.17.0.dylib*
   4 lrwxr-xr-x  1 ethomson  staff       20 Apr  3 16:55 libgit2.0.dylib@ -> libgit2.0.17.0.dylib
   4 lrwxr-xr-x  1 ethomson  staff       15 Apr  3 16:55 libgit2.dylib@ -> libgit2.0.dylib

如果您使用 XCode 而不是 gcc/clang 目标,这应该是您正在构建的目标的目录。就我而言,Debug

【讨论】:

  • 感谢您的帮助。我找到了图书馆,就在你说的地方。然而,Unity 仍然无法识别它,即使在重命名它之后也是如此。我不确定是 Unity 还是 LibGit2Sharp。无论如何,你确实回答了我的问题,我必须想办法让这一切顺利进行。
  • LibGit2Sharp?你在使用 C# 吗?单声道?
  • 我正在使用 C#。尝试调用任何LibGit2Sharp 方法时出现异常——System.DLLNotFoundException。我想我只是不确定.dylib 是否足以达到此目的,而且我还没有弄清楚如何使用生成的动态库创建一个合适的bundle(只需将其重命名为另一篇文章建议似乎还不够)。
  • core/nativemethods.cs 中的 libgit2sharp 源代码在 Some/Path/NativeBinaries/[amd64|x86]/ 中查找 git2 dll/dylib。不幸的是,我无法弄清楚Some/Path/ 是什么!
  • 在我的系统上,当我从 unity 中转储执行程序集的本地路径时,我得到 /path/to/unityproject/Library/ScriptAssemblies/Assembly-CSharp-Editor.dll 这是无用的,因为这是 unity 喜欢核对的目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 2012-07-19
  • 1970-01-01
  • 2014-07-31
  • 2021-07-12
相关资源
最近更新 更多