用Cocotron生成EXE

时间:2012-09-05 21:39:48

标签: objective-c compiler-errors cross-compiling cocotron

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

Xcode Error Message

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

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

如何使用Cocotron生成EXE?

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

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

编辑2 :我现在已将所有实施文件添加到Build Phases - >编译源代码部分,但我现在在Windows目标中有130个构建错误,现在它没有构建(当然,它会产生130个构建错误)。 HOWEVER ,奇怪的是,4 / 5s的构建错误位于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)

1 个答案:

答案 0 :(得分:4)

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

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

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

修改

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

可执行文件夹路径: Executable folder path

在文件下 - >项目设置 - >高级,将构建位置设置为Legacy: build location

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

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

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

链接到Cocotron的Foundation和AppKit框架: link to frameworks

运行retargetBundle的构建阶段: retarget bundle

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

如果它无法正常工作,请告诉我们您看到的应用的哪些部分以及您不知道的部分。