2

在广泛寻找可以在 Windows 上编译我的 Obj-C OS X 应用程序的工具之后,我终于找到。这允许我(在复杂的安装设置之后)将一些构建设置和规则添加到我复制的(对于 Windows)Xcode 目标中,然后构建。最终目标是能够运行我的 OS X 应用程序,交叉编译,然后在 Windows 上运行。问题是,当我构建和运行时,Xcode 只生成一个 APP 文件而不是一个 EXE。Xcode 甚至不会运行它,因为不支持“架构”:

Xcode 错误信息

我尝试将 APP 扩展名重命名为 EXE,但是当我在 Windows 中打开它时,它只会将其识别为文件夹而不是可执行程序。

我觉得我错过了什么。我认为 Cocotron 应该在正确完成后自动生成一个 EXE,我还需要做什么来生成一个 EXE?我认为 cocotron.org 上的文档还有更多内容,但它不完整且难以理解。

如何使用 Cocotron 生成 EXE?

任何事情都值得赞赏,因为官方的 Cocotron 文档很少……甚至是另一个更好的交叉编译器?

编辑:我下载了 Cocotron 的 TextEditor 示例项目,并完全复制了每个构建设置,就像它在 TextEdit 项目中一样(文件路径/名称除外)。完成此操作后,我尝试构建 windows 目标,在 .APP 包中再次没有生成任何 EXE 文件。

编辑 2:我现在已将所有实现文件添加到 Build Phases -> Compile Sources 部分,但我现在在 Windows 目标中有 130 个构建错误,现在它没有构建(当然,它会生成 130 个构建错误) . 但是,奇怪的是 4/5 的构建错误位于 Header 和 PCH 文件中。AppDelegate.m 中只有少数几个

我在 H 和 PCH 文件中始终只收到一些不同的错误消息:

  • *:No Such File or Directory FRAMEWORK NAME
  • Expected * before *
  • Cocotron 1.0 Windows i386 gcc default (4.3.1) Error...

除了以下内容之外,其中一些还出现在 AppDelegate.M 中:

  • Undeclared (First Use in this function)
4

1 回答 1

4

.exe 隐藏在 .app 文件中。它都在 .app 文件夹中,因为它模仿了 OS X 程序的结构。打开 .app 文件夹并查看 Contents/Windows。如果您的项目构建正确,则 .exe 文件将在那里。

不要费心尝试从 Xcode 或 OS X 下以任何其他方式运行它,它是一个 Windows 程序。

而且,是的,Cocotron 的文档还有很多不足之处。尽管存在困难和限制,但我没有找到更好的方法来编译 Cocoa 程序以在 Windows 下运行。但是要为相当多的条件编译做好准备。自从我使用它以来已经有几个月了。我确信它一直在改善。

编辑

我在 Xcode 4.4 下工作的现有项目中有 Cocotron 目标。以下是一些设置,以确保您拥有:

可执行文件夹路径: 可执行文件夹路径

在 File -> Project Settings -> Advanced 下,将构建位置设置为 Legacy: 构建位置

在 Edit Scheme 中,将 Build Configuration 设置为 Release: 构建配置

构建产品路径(我的设置为 build-Windows): 构建产品路径

使用 Cocotron 编译器处理 C 文件的构建规则: 构建规则

链接到 Cocotron 的 Foundation 和 AppKit 框架: 链接到框架

要运行的构建阶段retargetBundle重定向捆绑

编译完所有内容后,您应该会build-Windows在项目文件夹中看到一个文件夹,其中包含一个 Release 文件夹,其中包含一个 .app 包。在该捆绑包中,您应该会看到一个 Contents 文件夹,其中包含一个 Windows 文件夹,其中包含 AppKit.1.0.dll、AppKit.framework、Foundation.1.0.dll、Foundation.framework 和yourApp .exe。

如果它不起作用,请告诉我们您看到的应用程序的哪些部分以及您没有看到的部分。

于 2012-09-06T00:13:50.540 回答