2

Windows で Obj-C OS X アプリをコンパイルするツールを探し回った結果、ついにを見つけました。これにより、(複雑なインストールセットアップの後) 複製した (Windows 用の) Xcode ターゲットにいくつかのビルド設定とルールを追加してビルドすることができます。最終的な目標は、OS X アプリを実行し、クロス コンパイルしてから Windows で実行できるようにすることです。問題は、ビルドして実行すると、Xcode が EXE ではなく APP ファイルのみを生成することです。「アーキテクチャ」がサポートされていないため、Xcode はそれを実行することさえできません。

Xcode エラー メッセージ

APP拡張子の名前をEXEに変更しようとしましたが、Windowsで開くと、実行可能プログラムではなくフォルダーとして認識されます。

何かが足りない気がします。Cocotron が正しく実行されると自動的に EXE を生成するはずだと思いますが、EXE を生成するには他に何をする必要がありますか? cocotron.org のドキュメントには他にもあると思いますが、不完全でわかりにくいです。

Cocotron で EXE を生成するにはどうすればよいですか?

Cocotron の公式ドキュメントが不足しているため、何でも歓迎します....さらに優れたクロスコンパイラはありますか?

EDIT : Cocotron の TextEditor Example プロジェクトをダウンロードし、すべてのビルド設定を TextEdit プロジェクトとまったく同じように複製しました (ファイル パス/名前を除く)。これを行った後、Windows ターゲットをビルドしようとしましたが、もう一度 .APP バンドル内に EXE ファイルが生成されませんでした。

編集 2 : すべての実装ファイルを Build Phases -> Compile Sources セクションに追加しましたが、Windows ターゲットに 130 のビルド エラーがあり、ビルドされません (もちろん、130 のビルド エラーが生成されます)。 . ただし、奇妙な点は、ビルド エラーの 4/5 がヘッダー ファイルと 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 ファイルに埋め込まれています。OS X プログラムの構造を模倣しているため、すべて .app フォルダーにあります。.app フォルダーを開き、Contents/Windows を調べます。プロジェクトが正しくビルドされていれば、.exe ファイルが存在します。

Xcode から実行しようとしたり、OS X の下で他の方法で実行したりしないでください。これは Windows プログラムです。

そして、はい、Cocotron のドキュメントには多くの要望が残されています。その難しさと制限にもかかわらず、Cocoa プログラムをコンパイルして Windows で実行するのにこれ以上の方法はありません。ただし、かなりの条件付きコンパイルに備えてください。私がそれで働いてから数ヶ月が経ちました。常に改善していると確信しています。

編集

Xcode 4.4 で動作する既存のプロジェクトに Cocotron ターゲットがあります。確認するための設定は次のとおりです。

実行可能フォルダーのパス: 実行可能フォルダーのパス

[ファイル] -> [プロジェクト設定] -> [詳細設定] で、ビルド場所を [レガシー] に設定します。 ビルド場所

[スキームの編集] で、[ビルド構成] を [リリース] に設定します。 ビルド構成

ビルド製品のパス (私の場合は build-Windows に設定されています): 製品パスを構築する

Cocotron コンパイラで処理される C ファイルのビルド ルール: ビルドルール

Cocotron の Foundation および AppKit フレームワークへのリンク: フレームワークへのリンク

実行するビルドフェーズretargetBundle: バンドルの再ターゲット

すべてを適切にコンパイルするとbuild-Windows、.app バンドルを含む Release フォルダーを含むプロジェクト フォルダー内のフォルダーが表示されます。そのバンドル内には、AppKit.1.0.dll、AppKit.framework、Foundation.1.0.dll、Foundation.framework、およびyourApp .exeを含む Windows フォルダーを含む Contents フォルダーが表示されます。

動作しない場合は、アプリのどの部分が表示され、どの部分が表示されないかお知らせください。

于 2012-09-06T00:13:50.540 に答える