使用gnustepmakefile构建Xcode项目不会打开应用程序窗口,buildtool可以';我找不到英语

使用gnustepmakefile构建Xcode项目不会打开应用程序窗口,buildtool可以';我找不到英语,xcode,gnustep,Xcode,Gnustep,我在Mac OS X Tiger 10.4.11上完成了使用Xcode 2.5的测试,我称之为CurrencyConverter2,因为这是我的第二次尝试。因为我已经读到GNUstep与MacOSxTiger版本的Cocoa兼容,所以我想尝试在GNUstep中构建这个Xcode项目,我对此很感兴趣 我能够在运行FreeBSD12.0的虚拟机上安装GNUstep。我创建了一个名为GNUmakefile的Makefile。以下是GNUmakefile的内容: include $(GNUSTEP_MA

我在Mac OS X Tiger 10.4.11上完成了使用Xcode 2.5的测试,我称之为CurrencyConverter2,因为这是我的第二次尝试。因为我已经读到GNUstep与MacOSxTiger版本的Cocoa兼容,所以我想尝试在GNUstep中构建这个Xcode项目,我对此很感兴趣

我能够在运行FreeBSD12.0的虚拟机上安装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/mainmunu.nib


我还尝试使用一个名为buildtool的工具,该工具能够使用GNUstep构建Xcode项目,但它抱怨说,即使在我运行buildtool的目录中,它也找不到English.lproj。

将Mac应用程序转换为GNUstep时,您需要制作一个GNUstep特定的Info plist模板,大致反映Info.plist(仅限Mac)

在构建时,Info-plist模板用于生成两个文件:Info-gnustep.plist和应用程序的.desktop()文件

Info-gnustep.plist包含在loadtime/运行时使用的信息条目,例如主体类的名称、要加载的主菜单文件等

应用程序的.desktop文件包含用于在桌面环境/文件浏览器中注册应用程序的信息条目,例如应用程序的桌面菜单类别、可执行路径、支持的MIME类型等。(注意:“make install”当前未在桌面环境中注册GNUstep应用程序;为了使已安装的GNUstep应用程序显示在桌面菜单中,其.desktop文件(位于其资源文件夹中)必须使用手动注册。)

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;
}
gnustepmake将自动查找CurrencyConverter2Info.plist,因此它不需要Makefile中的条目


与Info plist模板问题无关,您还可以对Makefile进行以下更改:

  • Info.plist仅适用于Mac,因此可以从 CurrencyConverter2\u资源\u文件
  • 通过从CurrencyConverter2_resource_文件中删除MainMenu.nib并将以下两行添加到Makefile,可以将其指定为本地化资源(因此其路径名中不再需要English.lproj):

    CurrencyConverter2\u本地化的\u资源\u文件=main menu.nib CurrencyConverter2_语言=英语

GNUstep是否兼容。不确定是否真的兼容。