使用GNUstep Makefile构建Xcode项目无法打开应用程序窗口,buildtool找不到English.lproj

时间:2019-06-23 08:53:38

标签: xcode gnustep

我在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。

1 个答案:

答案 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进行以下更改:

  • Info.plist仅适用于Mac,因此可以从中删除 CurrencyConverter2_RESOURCE_FILES
  • 可以通过从CurrencyConverter2_RESOURCE_FILES中删除
  • MainMenu.nib作为本地化资源(因此它的路径名不再需要English.lproj)并将这两行添加到Makefile中:

    CurrencyConverter2_LOCALIZED_RESOURCE_FILES = MainMenu.nib CurrencyConverter2_LANGUAGES =英文