我无法在Mac上编译AssaultCube。我已经下载了最新的源代码并在其中打开了Xcode项目(因为运行“make”会给我错误“找不到''INTL / libintl.h'文件”)。我已经安装了Xcode,并定期使用它来编译自己的代码,但是它们的代码将无法正常工作。

首先,源有语法错误。它在这里给我一个类型重定义错误:

typedef unsigned int GLhandleARB;   /* shader object handle */

因此,我指出了这一点,希望它并不重要。其次,关于libintl到处都有Mach-O Linker错误。 ov_read也有一些错误,似乎是OGG播放器。

我去了两次并安装了gettext来获取libintl并下载了OS X的libintl软件包…make仍然无法使用,并且Xcode无法编译。

最佳答案

我发现了问题。他们的项目文件只是搞砸了。首先,您必须重新链接所有库。在源代码中Xcode文件夹的Frameworks文件夹中,您必须手动链接诸如INTL.framework之类的东西。其次,您必须将构建类型设置为32位。

现在,我要做的就是修复我遇到的运行时错误。老实说,为什么不能仅编译运行?

更新:这是最新版本的确切步骤。我不必像上次一样做很多工作,现在伽马干扰已得到解决。我不知道是否安装了一些您没有的库,但是如果由于缺少库而无法建立库,则可以从MacPorts中获取它们。请评论是否缺少任何库,我将对此进行更新:

# grab the src first
git clone https://github.com/assaultcube/AC ac
cd ac
git checkout 76eb031 # latest release as of 1/29/2017; I goofed last time by just taking the latest commit, which had bugs
open ./source/xcode/assaultcube.xcodeproj # should open Xcode

在Xcode中:
  • 选择“assaultcube”作为构建目标。
  • 将目标体系结构更改为32位
  • 转到glext.h,并注释掉任何在尝试构建时会导致有关类型重新定义的错误的内容。对我来说,这是typedef unsigned int GLhandleARB;typedef ptrdiff_t GLintptrARB;typedef ptrdiff_t GLsizeiptrARB;
  • 构建。进入目标文件夹,找到assaultcube.app。您也可以构建启动器,但是由于我不想找到的某些原因,启动器源中缺少资源,因此只需从https://github.com/assaultcube/AC/releases/download/v1.2.0.2/AssaultCube_v1.2.0.2.dmg下载编译的Mac启动器/游戏发行版,然后仅下载ln -s [source] [destination]的symlink(assaultcube.app)内置到AssaultCube.app/contents/gamedata中。应该替换现有的.app。
  • 全部设置。编辑,构建并打开刚刚符号链接(symbolic link)到的启动器以进行测试。
  • 09-06 22:20