Генерация EXE с Cocotron
После долгих поисков инструмента, который скомпилировал бы мое приложение Obj-C OS X для Windows, я наконец нашел cocotron. Это позволяет мне (после сложной установки и настройки) добавить несколько параметров и правил сборки в мою дублированную (для Windows) цель XCode и затем выполнить сборку. Конечная цель состоит в том, чтобы иметь возможность запустить мое приложение OS X, выполнить кросс-компиляцию и затем запустить в Windows. Проблема в том, что при сборке и запуске Xcode генерирует только файл APP, а не EXE. Xcode даже не запустит его, потому что "Архитектура" не поддерживается:
Я попытался переименовать расширение APP в EXE, но когда я открываю его в Windows, он просто распознает его как папку, а не исполняемую программу.
Я чувствую, что что-то упустил. Я думаю, что Cocotron должен автоматически генерировать EXE, когда все сделано правильно, что еще мне нужно сделать, чтобы сгенерировать EXE? Я думаю, что есть еще кое-что о документации на cocotron.org, но она неполна и трудна для понимания.
Как я могу создать EXE с Cocotron?
Что-нибудь ценится, поскольку официальной документации Cocotron недостаточно.... даже другой лучший кросс-компилятор?
РЕДАКТИРОВАТЬ: Я скачал проект примера TextEditor Cocotron и реплицировал каждый параметр сборки точно, как это было в проекте TextEdit (за исключением путей / имен файлов). После этого я попытался построить цель Windows, еще раз, ни один файл EXE не был сгенерирован в пакете.APP.
РЕДАКТИРОВАТЬ 2: Теперь я добавил все свои файлы реализации в раздел "Фазы сборки" -> "Исходники компиляции", но у меня теперь 130 ошибок сборки в целевом объекте Windows, и теперь он не собирается (конечно, он генерирует 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)
1 ответ
.Exe похоронен в.app файле. Это все в папке.app, потому что оно имитирует структуру программы OS X. Откройте папку.app и посмотрите в Contents/Windows. Если ваш проект был построен правильно, файл.exe будет там.
Не пытайтесь запустить его из Xcode или любым другим способом под OS X, это программа для Windows.
И, да, документация Cocotron оставляет желать лучшего. Несмотря на трудности и ограничения, я не нашел лучшего способа скомпилировать программу Cocoa для работы под Windows. Но будьте готовы к небольшому количеству условной компиляции. Прошло несколько месяцев с тех пор, как я работал с ним. Я уверен, что все время улучшается.
редактировать
У меня есть цель Cocotron в моем существующем проекте, работающем под Xcode 4.4. Вот некоторые настройки, чтобы убедиться, что у вас есть:
Путь к исполняемой папке:
В разделе "Файл" -> "Параметры проекта" -> "Дополнительно" установите расположение сборки в Legacy:
В "Редактировать схему" установите "Конфигурация сборки" на "Выпуск":
Путь продуктов для сборки (у меня установлен для сборки Windows):
Правило сборки для файлов C, которые будут обработаны компилятором Cocotron:
Ссылка на фреймворки Cocotron's Foundation и AppKit:
Фаза сборки для запуска retargetBundle
:
После компиляции всего этого, вы должны увидеть build-Windows
папка в папке вашего проекта, которая содержит папку Release, которая содержит пакет.app. Внутри этого пакета вы должны увидеть папку Contents, которая содержит папку Windows, которая содержит AppKit.1.0.dll, AppKit.framework, Foundation.1.0.dll, Foundation.framework и yourApp.exe.
Если это не работает, дайте нам знать, какие части приложения вы видите, а какие нет.