我在Mac OS X Tiger 10.4.11上使用Xcode 2.5完成了CurrencyConverter example,我将其称为CurrencyConverter2是因为这是我的第二次尝试。由于我已经读过GNUstep与Cocoa的Mac OS X Tiger版本兼容,所以我想尝试在GNUstep中构建这个Xcode项目,对此我很感兴趣。
我能够在运行FreeBSD 12.0的VM上安装GNUstep。我创建了一个名为GNUmakefile的Makefile。这是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的工具,该工具能够使用GNUstep构建Xcode项目,但是它抱怨说,即使它位于我运行buildtool的目录中,也找不到English.lproj。
答案 0 :(得分:1)
将Mac应用程序转换为GNUstep时,您需要制作一个特定于GNUstep的Info-plist模板,该模板可大致反映Info.plist(仅Mac)。
在构建时,Info-plist模板用于生成两个文件:Info-gnustep.plist和应用程序的.desktop(freedesktop.org desktop entry)文件。
Info-gnustep.plist包含在加载时/运行时使用的Info条目,例如主体类的名称,要加载的主菜单nib文件等。
应用程序的.desktop文件包含用于在桌面环境/文件浏览器中注册应用程序的信息条目,例如应用程序的桌面菜单类别,可执行文件路径,受支持的MIME类型等(注意: “安装”当前未在桌面环境中注册GNUstep应用;要使已安装的GNUStep应用出现在桌面菜单中,必须使用{{3}手动注册其.desktop文件(位于其Resources文件夹中)。 }。
Info-plist模板应命名为“ {APP_NAME} Info.plist”,并且可以包含标准XML格式的plist或简单的文本列表格式:
{
{KEY1} = {VALUE1};
{KEY2} = {VALUE2};
...
}
对于CurrencyConverter2,在与Makefile相同的目录中创建一个名为“ CurrencyConverter2Info.plist”的文本文件,其内容为:
{
ApplicationName = CurrencyConverter2;
FreeDesktopCategories = ("Utility", "X-GNUstep");
NSExecutable = "CurrencyConverter2";
NSMainNibFile = "MainMenu.nib";
NSPrincipalClass = NSApplication;
NSRole = Application;
}
GNUstep-make将自动找到CurrencyConverter2Info.plist,因此不需要Makefile中的条目。
与Info-plist模板问题无关,您还可以对Makefile进行以下更改:
MainMenu.nib作为本地化资源(因此它的路径名不再需要English.lproj)并将这两行添加到Makefile中:
CurrencyConverter2_LOCALIZED_RESOURCE_FILES = MainMenu.nib CurrencyConverter2_LANGUAGES =英文