MacOS 上的 ioquake3:将 Freetype 与游戏捆绑在一起

ioquake3 on MacOS: Bundling Freetype With Game

我正在制作一款基于 ioquake3 的游戏,我在游戏中启用了 Freetype 渲染字体。

但是,在整个开发过程中,该库一直是我的后背痛,现在游戏无法 运行 除了我自己的 MacOS 计算机,因为它们没有安装 Freetype。

它将在“.”中查找 "renderer_opengl2_x86_64.dylib"。并失败。然而 ioquake3 运行 在同一台计算机上运行良好。如果我转移 ioquake3.app 的渲染器 dylibs,游戏 运行s 但没有文本渲染,因为默认情况下未启用 Freetype。

所以我的问题是如何将 Freetype 与基于 ioquake3 的游戏捆绑在一起。我认为这就像将 libfreetype.6.dylib 复制到 [game].app/Contents/MacOS 一样简单,但这也不起作用。原始游戏不使用它,因此复制渲染器 dylibs 不起作用。我不希望每个用户都必须安装 Freetype 和 link 它以及所有这些,那么如何将库与我的应用程序捆绑在一起?

好的,所以我发现渲染器 dylib 文件正在调用系统中的 hard-coded 目录,我必须自己映射一个目录才能让游戏编译,但在其他方面不正常MacOS 计算机。

所以我所做的是在终端中使用 install_name_tool 来更改 dylib 搜索的目录。

install_name_tool -change /usr/local/lib/libfreetype.6.dylib @executable_path/libfreetype.6.dylib /Applications/{game name}.app/Contents/MacOS/renderer_opengl2_x86_64.dylib

^ 然后对 OpenGL 2 dylib 做同样的事情,我将 libfreetype.6.dylib 文件复制到我的应用程序的 Contents/MacOS 目录中。之后,游戏 运行 在我的电脑上完美运行,而我使用的 "guinea pig" 电脑上没有安装 Freetype。

我希望这可以帮助其他遇到 Freetype 和 ioquake3 问题的人!