我想创建一个没有GUI但可以访问应用程序包的辅助应用程序。我查看了Xcode命令行项目模板,但这些模板只生成可执行文件。我如何创建类似于命令行工具的东西,它不会显示应用程序菜单,但提供对.app中捆绑资源的访问?我是否考虑得不正确?
谢谢。
谢谢。
Peter的回答(使用LSUIElement
)可能是您要找的。偶尔,我也想创建一个同时具有应用程序包和命令行应用程序的实际命令行应用程序。如果其他人遇到相同的情况,这里是我发现的...
应用程序包不是可执行文件。真正的可执行文件在其中: MyApp.app/Contents/MacOS/MyApp
是名为MyApp的应用程序的实际Mach-O可执行文件。标准的Xcode模板将应用程序链接到AppKit.framework,并具有定义可执行文件的main()
函数的main.m,该函数启动了一个NSApplication
实例。但是,您可以将任何可执行文件放入应用程序包中,包括仅控制台的应用程序。只需将应用程序模板中的main()
函数替换为控制台应用程序的main()
函数,并从应用程序的链接框架中删除AppKit.framework。
如果想要完全避免使用Objective-C,可以将main.m替换为声明main函数的main.c(尽管如果替换main()
函数的内容,则main.m中没有必要使用Objective-C)。
要从控制台运行应用程序,您必须指定实际的可执行文件而不是应用程序包,因此您必须在命令行中输入MyApp.app/Contents/MacOS/MyApp
。当我将应用程序包用于控制台应用程序(以提供链接的框架,资源等)时,我经常创建指向可执行文件的符号链接,并在安装或第一次运行时将符号链接放在/usr/local/bin(或路径上的其他地方)。