Cocotron

每當你告訴人家你做了一個 Mac 軟體,得到的第一個反應通常是些客套話,告訴你這套軟體看起來似乎很不錯,接下來的反應就是-什麼時候會推出 Windows 版本;請注意,問題不是「會不會推出」,而是「什麼時候推出」Windows 版本。有天就心血來潮,把 >Cocotron 裝起來玩玩看;Cocoatron 網站上面說,只要裝了這個東西,就可以直接把 Xcode project 編譯成 win32 或是 Linux 上面可以執行的 binary,姑且把手上一些程式丟進去試一試,嗯,果然編不起來。

Cocotron 的安裝說明還頂不清楚。首先,你會去網站上的下載頁面下載一個安裝套件,可是光裝完這個套件還不夠-安裝套件會幫你裝好一套可以將 Objective C 語言編譯成其他平台 binary 的 gcc。

接下來,你得要用 svn 把 cocotron 的程式碼 checkout 出來,編出可以讓你的 win32 或 Linux binary 去 link 的 framework,cocotron 自己實作了 Cocoa 的幾套 framework,像是 Foundation 與 AppKit 等,不知道 Cocotron 的實作是不是跟 GNUStep 有關係。接著,你還要改一下 Xcode project 的設定,把 compiler 換成 Cocotron 的,把 Framework 路徑改成 Cocotron 的,最後,嗯,還是編不起來。

問題出在 Framework 的支援程度。今天任何一套在 Mac 上面透過 Cocoa 開發出來的應用程式,都不太可能只用到 Foundation 與 AppKit,還有目前 Cocotron 已經實作其他的 Framework而已。

這年頭桌面軟體與網路應用可說交纏在一起,像 Twitter 明明是網頁服務,但使用者還是覺得在桌面上有套 Tweeite 會比較好用,而你做桌面軟體的時候,要呈現一份說明文件、版本記錄,又還是開一個瀏覽器開 HTML 好用,Cocoa 裡頭最複雜的 UI 元件莫過於 WebKit,可是 Cocotron 還不支援。你想要處理音訊,會需要 CoreAudio,想要播放影片,會用到 QuickTime,Cocotron 也都還沒有這些玩意。按下 build 按鈕之後,Xcode 只會給一排又一排的紅字。

所以呢,想要做到跨平台的東西,大概還是得要把跟平台相依的部份給切割出來,只有那些與平台功能無關的部份可能跨平台,至於相依的部份,還是得要在每個平台上個別寫一次。而想要執行順暢,還是得要針對平台做最佳化,想要有好的使用者體驗,還是要使用平台所提供的使用者介面。想要一套程式什麼平台都可以通吃,以現在每個平台所提供的基礎與工具,怎麼看,都只能是肖想。

2 thoughts on “Cocotron

  1. 其實一直很好奇, 因為在 Apple iTunes, Safari for Windows 通常可以找到 WebKit, Foundation, AppKit, CoreGraphics, etc 的 framework library DLL.
    如果拿 GNU Obj-C for Cygwin/MinG W和 Mac Xcode 的 header file, 再用 implib 把 DLL 輸出 .lib 可以供 dynamic linking, 如此是不是大概就可以直接弄出 XXX.app for Windows.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.