【问题标题】:Porting CLI/GUI Windows program to OS X将 CLI/GUI Windows 程序移植到 OS X
【发布时间】:2012-05-12 16:05:01
【问题描述】:

我有一个带有 GUI 的 Windows 程序,它还使用命令行界面(cmd 窗口)作为调试控制台。基本上,当它被双击时,它会启动一个命令行窗口,然后程序会创建所有的 GUI 窗口。然后您将拥有两个 Windows:主 GUI 和一个调试控制台。

我正在尝试将此程序移植到 OS X。因为当您运行命令行应用程序时,OS X(以及所有 Unix 操作系统)不会自动启动命令行窗口。所以,我显然需要另一种方式来移植这个应用程序。

我最初的想法只是将源代码导入 XCode 项目,重定向标准输入和输出,然后移植 GUI。 GUI 和控制台将像在 Windows 中一样并行运行。我认为这不是最佳解决方案,因为这意味着我基本上必须编写一个终端模拟器。

我的另一个想法是将应用程序移植为命令行应用程序,就像在 Windows 中一样创建它的 GUI。然后必须从可以处理所有 I/O 的 Terminal.app 运行应用程序。不幸的是,我认为你不能在不使用 NSApplication 循环的情况下使用 Cocoa 框架。

有什么想法可以解决这个问题吗?

【问题讨论】:

  • 如果是 CLI,则将其视为 ... CLI。只需启动 Terminal/sh 或诸如此类的东西。也许是一个标志/检查以防止重新启动。希望它已经是“普通”或 Unixy-C ;-)

标签: objective-c macos cocoa command-line-interface porting


【解决方案1】:

您当然可以从终端启动的应用程序创建运行循环。但这通常不是您想要做的。

听起来就像在 Windows 上,CLI 只是用作创建真正调试控制台窗口的快捷方式。所以最简单的答案是创建一个调试控制台窗口。创建一个只包含多行文本或列表视图的窗口非常容易。 (如果您想要更高级的东西,请考虑从 iTerm2 或其他开源项目中借用代码,而不是尝试构建一个完整的终端。)如果您的调试信息正在使用一些花哨的宏打印,只需更改宏以登录到您的列表视图。

如果您直接执行 fprintf 或 syslog 之类的操作来进行日志记录,则创建一个启动主应用程序的包装器应用程序可能会更简单,并且包装器会创建调试控制台窗口并显示主应用程序的标准输出和/或标准错误。 (这可能就像使用 popen 一样简单。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    相关资源
    最近更新 更多