2012-05-03 90 views
0

我有一個Windows程序,它具有也使用命令行界面(cmd Window)作爲調試控制檯的GUI。基本上,當它被雙擊時,它會啓動一個命令行窗口,然後程序創建所有的GUI窗口。然後你會有兩個Windows:主GUI和調試控制檯。將CLI/GUI Windows程序移植到OS X

我試圖將這個程序移植到OS X中。因爲OS X(和所有Unix操作系統就此而言)在運行命令行應用程序時不會自動啓動命令行窗口。所以,我顯然需要另一種方式來移植這個應用程序。

我最初的想法只是將源代碼導入到XCode項目中,重定向標準輸入和輸出,然後移植GUI。 GUI和控制檯將像Windows中一樣並排運行。我不認爲這是最優化的解決方案,因爲那意味着我基本上必須編寫終端仿真器。

我的另一個想法是將應用程序作爲命令行應用程序移植,就像在Windows中一樣創建其GUI。然後,應用程序必須從可以處理所有I/O的Terminal.app運行。不幸的是,我不認爲你可以在不使用NSApplication循環的情況下使用Cocoa框架。

任何想法,我可以如何處理這個?

+0

如果是CLI,請像CLI一樣對待它。只需啓動Terminal/sh或whatnot。也許一個標誌/檢查,以防止重新啓動。希望它是「普通的」或Unixy-C已經;-) – 2012-05-03 06:52:54

回答

0

你當然可以從終端啓動的應用程序創建一個運行循環。但這通常不是你想要做的。

聽起來像在Windows上,CLI只是用作創建真實調試控制檯窗口的快捷方式。所以最簡單的答案就是創建一個調試控制檯窗口。創建一個只包含多行文本或列表視圖的窗口非常簡單。 (如果你想要更奇特的東西,可以考慮從iTerm2或其他開源項目中借用代碼,而不是試圖構建一個完整的終端。)如果你的調試信息是用一些奇特的宏打印的,只需要將宏更改爲登錄到列表視圖。

如果您直接執行類似fprintf或syslog的操作來執行日誌記錄,則創建啓動主應用程序的包裝應用程序可能會更簡單,並且包裝程序會創建調試控制檯窗口並顯示主應用程序的stdout和/或stderr。 (這可能與使用popen一樣簡單。)

相關問題