使用 GNUstep Makefile 构建 Xcode 项目无法打开应用程序 Window,buildtool 找不到 English.lproj
Building Xcode Project Using GNUstep Makefile Does Not Open Application Window, buildtool Can't Find English.lproj
我在 Mac OS X Tiger 10.4.11 上使用 Xcode 2.5 完成了 CurrencyConverter example,我将其称为 CurrencyConverter2,因为这是我的第二次尝试。因为我读到 GNUstep 与 Mac OS X Tiger 版本的 Cocoa 兼容,所以我想尝试在 GNUstep 中构建这个 Xcode 项目,我很感兴趣在学习中。
我能够在 VM 上安装 GNUstep 运行 FreeBSD 12.0。我创建了一个名为 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 时,主 window 根本没有出现。
我的直觉是,出于某种原因,我的 Makefile 无法识别英语。lproj/MainMenu.nib.
我还尝试使用一个名为 buildtool 的工具,它能够使用 GNUstep 构建 Xcode 项目,但它抱怨找不到 English.lproj,即使它在我的目录中运行 构建工具。
将 Mac 应用程序转换为 GNUstep 时,您需要制作一个 GNUstep-specific Info-plist 大致反映 Info.plist 的模板(即 Mac-only) .
在构建时,Info-plist 模板用于生成两个文件:Info-gnustep.plist 和应用程序的 .desktop (freedesktop.org desktop entry) 文件。
Info-gnustep.plist 包含在 loadtime/runtime 处使用的信息条目,例如主体名称 class、要加载的 main-menu nib 文件等
应用程序的 .desktop 文件包含用于向 desktop-environment/file-browser 注册应用程序的信息条目,例如应用程序的 desktop-menu 类别、可执行路径、支持的 MIME 类型等。(注意: 'make install' 目前没有在桌面环境中注册 GNUstep 应用程序;为了让已安装的 GNUStep 应用程序出现在桌面菜单中,其 .desktop 文件(位于其 Resources 文件夹中)必须使用 'desktop-file-install' command-line tool.)
Info-plist 模板应命名为“{APP_NAME}Info.plist”,并且可以包含标准 XML-format plist,或简单的 text-list格式:
{
{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-only,所以可以从
CurrencyConverter2_RESOURCE_FILES
MainMenu.nib 可以通过从 CurrencyConverter2_RESOURCE_FILES 中删除并添加这两个来指定为本地化资源(因此它的路径名中不再需要 English.lproj)您的 Makefile 行:
CurrencyConverter2_LOCALIZED_RESOURCE_FILES = MainMenu.nib
CurrencyConverter2_LANGUAGES = 英语
我在 Mac OS X Tiger 10.4.11 上使用 Xcode 2.5 完成了 CurrencyConverter example,我将其称为 CurrencyConverter2,因为这是我的第二次尝试。因为我读到 GNUstep 与 Mac OS X Tiger 版本的 Cocoa 兼容,所以我想尝试在 GNUstep 中构建这个 Xcode 项目,我很感兴趣在学习中。
我能够在 VM 上安装 GNUstep 运行 FreeBSD 12.0。我创建了一个名为 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 时,主 window 根本没有出现。
我的直觉是,出于某种原因,我的 Makefile 无法识别英语。lproj/MainMenu.nib.
我还尝试使用一个名为 buildtool 的工具,它能够使用 GNUstep 构建 Xcode 项目,但它抱怨找不到 English.lproj,即使它在我的目录中运行 构建工具。
将 Mac 应用程序转换为 GNUstep 时,您需要制作一个 GNUstep-specific Info-plist 大致反映 Info.plist 的模板(即 Mac-only) .
在构建时,Info-plist 模板用于生成两个文件:Info-gnustep.plist 和应用程序的 .desktop (freedesktop.org desktop entry) 文件。
Info-gnustep.plist 包含在 loadtime/runtime 处使用的信息条目,例如主体名称 class、要加载的 main-menu nib 文件等
应用程序的 .desktop 文件包含用于向 desktop-environment/file-browser 注册应用程序的信息条目,例如应用程序的 desktop-menu 类别、可执行路径、支持的 MIME 类型等。(注意: 'make install' 目前没有在桌面环境中注册 GNUstep 应用程序;为了让已安装的 GNUStep 应用程序出现在桌面菜单中,其 .desktop 文件(位于其 Resources 文件夹中)必须使用 'desktop-file-install' command-line tool.)
Info-plist 模板应命名为“{APP_NAME}Info.plist”,并且可以包含标准 XML-format plist,或简单的 text-list格式:
{
{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-only,所以可以从 CurrencyConverter2_RESOURCE_FILES
MainMenu.nib 可以通过从 CurrencyConverter2_RESOURCE_FILES 中删除并添加这两个来指定为本地化资源(因此它的路径名中不再需要 English.lproj)您的 Makefile 行:
CurrencyConverter2_LOCALIZED_RESOURCE_FILES = MainMenu.nib CurrencyConverter2_LANGUAGES = 英语