2013-04-03 22 views
2

OSX對Window的.DLL文件的回答是一個'捆綁',或者我一直在閱讀,而且我無法弄清楚如何開始將libgit2構建爲可用的東西。如何將libgit2編譯成OSX應用程序包?

我通常在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描述了一個包的期望格式是什麼?

我該如何構建一個XCode bundle項目,然後從項目中的libgit2存儲庫中刪除所需的文件,然後點擊構建以獲取請求的格式在我之前的問題中?

+0

你現在在建立一個Mac'.dylib'嗎?你提到Mac用戶不能使用'git2.dll' - 這當然是真的,你需要先建立一個Mac共享庫。 – 2013-04-03 19:49:27

+0

我不確定CMake生成的默認XCode項目文件的內容是什麼,因爲它看起來都是垃圾。如果在某處存在'.dylib',我會嘗試篩選並檢查。如果我能找到,我可以將其重命名爲'.bundle',[根據這篇文章](http://answers.unity3d.com/questions/23615/how-to-make-unity-find -dylib-files.html)並使用它。有 – 2013-04-03 20:42:20

+0

有。應該在你的build目錄下生成'libgit2.dylib'。 – 2013-04-03 21:29:53

回答

2

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 [email protected] -> libgit2.0.17.0.dylib 
    4 lrwxr-xr-x 1 ethomson staff  15 Apr 3 16:55 [email protected] -> libgit2.0.dylib 

如果您使用的,而不是在gcc /鐺目標的XCode,這應該是你正在構建的目標目錄。在我的情況下,Debug

+0

感謝您的協助。我找到了圖書館,就在你說的地方。但是,即使重命名後,Unity依然不認識它。我不確定它是Unity還是'LibGit2Sharp'。無論如何,你確實回答了我的問題,而且我必須找出其他方法來完成這一切。 – 2013-04-04 03:30:37

+0

LibGit2Sharp?你在使用C#嗎?單? – 2013-04-04 12:24:55

+0

我正在使用C#。當試圖調用任何'LibGit2Sharp'方法 - System.DLLNotFoundException時,我得到一個異常。我想我只是不確定是否。dylib'已經足夠用於這個目的了,而且我還沒有想出如何使用生成的動態庫創建一個合適的'bundle'(僅僅將它重命名爲另一個帖子似乎是不夠的)。 – 2013-04-04 23:39:19