我有一个Windows程序,它有一个GUI,它也使用命令行界面(cmd Window)作为调试控制台。基本上,当双击它时,它会启动一个命令行窗口,然后程序会创建所有的GUI窗口。然后你有两个Windows:主GUI和一个调试控制台。
我正在尝试将此程序移植到OS X.因为OS X(以及所有Unix操作系统)在运行命令行应用程序时不会自动启动命令行窗口。所以,我显然需要另一种方法来移植这个应用程序。
我最初的想法只是将源代码导入XCode项目,重定向标准输入和输出,然后移植GUI。 GUI和控制台将像Windows一样并排运行。我不认为这是最理想的解决方案,因为这意味着我基本上必须编写终端仿真器。
我的另一个想法是将应用程序移植为命令行应用程序,就像在Windows中一样创建GUI。然后,应用程序必须从可以处理所有I / O的Terminal.app运行。不幸的是,我不认为你可以在不使用NSApplication循环的情况下使用Cocoa框架。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
您当然可以从终端启动的应用程序创建一个运行循环。但这通常不是你想要做的。
听起来像在Windows上,CLI只是用作创建真实调试控制台窗口的快捷方式。所以最简单的答案是创建一个调试控制台窗口。创建一个只包含多行文本或列表视图的窗口非常简单。 (如果你想要更好的东西,可以考虑从iTerm2或其他开源项目借用代码,而不是尝试构建一个完整的终端。)如果您的调试信息正在打印一些花哨的宏,只需更改宏以登录到列表视图。
如果您直接执行类似fprintf或syslog的操作来进行日志记录,则创建启动主应用程序的包装器应用程序可能会更简单,并且包装器会创建调试控制台窗口并显示主应用程序的标准输出和/或者stderr。 (这可能就像使用popen一样简单。)