Сборка проекта Xcode с использованием GNUstep Makefile не открывает окно приложения, buildtool Не удается найти English.lproj - PullRequest
1 голос
/ 23 июня 2019

Я выполнил пример CurrencyConverter , используя Xcode 2.5 в Mac OS X Tiger 10.4.11, который я назвал CurrencyConverter2, так как это была моя вторая попытка. Поскольку я читал, что GNUstep совместим с версией Cocoa для Mac OS X Tiger, я хотел попробовать построить этот проект Xcode в GNUstep, который мне интересно изучать.

Мне удалось установить GNUstep на виртуальную машину с FreeBSD 12.0. Я создал Makefile под названием GNUmakefile. Вот содержимое GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make

APP_NAME = CurrencyConverter2
CurrencyConverter2_OBJC_FILES = main.m ConverterController.m Converter.m
CurrencyConverter2_RESOURCE_FILES = Info.plist English.lproj/MainMenu.nib

include $(GNUSTEP_MAKEFILES)/application.make

При сборке программы с использованием gmake кажется, что все было построено правильно:

This is gnustep-make 2.7.0. Type 'gmake print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
Making all for app CurrencyConverter2...
Creating CurrencyConverter2.app/....
gmake[3]: Warning: File 'main.m' has modification time 21869 s in the future
 Compiling file main.m ...
 Compiling file ConverterController.m ...
 Compiling file Converter.m ...
 Linking app CurrencyConverter2 ...
gmake[3]: warning:  Clock skew detected.  Your build may be incomplete.
 Creating CurrencyConverter2.app/Resources...
 Creating stamp file...
 Creating CurrencyConverter2.app/Resources/Info-gnustep.plist...
 Creating CurrencyConverter2.app/Resources/CurrencyConverter2.desktop...
 Copying resources into the app wrapper...

Однако, когда я пытаюсь открыть CurrencyConverter2.app, главное окно вообще не отображается.

Я догадываюсь, что по каким-то причинам мой Makefile не распознает English.lproj / MainMenu.nib.

Я также пытался использовать инструмент под названием buildtool, который способен создавать проекты Xcode с использованием GNUstep, но он жаловался, что не может найти English.lproj, даже если он находится в каталоге, в котором я запускал buildtool.

1 Ответ

1 голос
/ 24 июня 2019

При преобразовании приложения Mac в GNUstep необходимо создать шаблон Info-plist для GNUstep, который приблизительно отражает Info.plist (который предназначен только для Mac).

Во время сборки шаблон Info-plist используется для создания двух файлов: Info-gnustep.plist и файла приложения .desktop ( freedesktop.org desktop desktop ).

Info-gnustep.plist содержит записи Info, используемые во время загрузки / выполнения, такие как имя основного класса, загружаемый файл главного меню и т. Д.

Файл приложения .desktop содержит записи Info, используемые для регистрации приложения в desktop-environment / file-browser, такие как категория меню рабочего стола приложения, путь к исполняемому файлу, поддерживаемые типы MIME и т. Д. (Примечание: 'make install 'в настоящее время не регистрирует приложение GNUstep в среде рабочего стола; для того, чтобы установленное приложение GNUStep появилось в меню рабочего стола, его файл .desktop, находящийся в папке "Ресурсы", должен быть зарегистрирован вручную с помощью " инструмент командной строки desktop-file-install * .)

Шаблон Info-plist должен называться "{APP_NAME} Info.plist" и может содержать стандартный список XML-формата или простой формат текстового списка:

{
   {KEY1} = {VALUE1};
   {KEY2} = {VALUE2};
   ...
}

Для CurrencyConverter2 создайте текстовый файл с именем «CurrencyConverter2Info.plist» в том же каталоге, что и Makefile, с содержимым:

{
    ApplicationName = CurrencyConverter2;
    FreeDesktopCategories = ("Utility", "X-GNUstep");
    NSExecutable = "CurrencyConverter2";
    NSMainNibFile = "MainMenu.nib";
    NSPrincipalClass = NSApplication;
    NSRole = Application;
}

GNUstep-make автоматически найдет CurrencyConverter2Info.plist, поэтому ему не требуется запись в Makefile.


Вне зависимости от проблемы шаблона Info-plist вы также можете внести следующие изменения в свой Makefile:

  • Info.plist предназначен только для Mac, поэтому его можно удалить из CurrencyConverter2_RESOURCE_FILES
  • MainMenu.nib можно указать как локализованный ресурс (поэтому ему больше не нужен English.lproj в своем пути), удалив его из CurrencyConverter2_RESOURCE_FILES и добавив две эти строки в ваш Makefile:

    CurrencyConverter2_LOCALIZED_RESOURCE_FILES = MainMenu.nib CurrencyConverter2_LANGUAGES = английский

...