如何在Mac上编译AssaultCube? libintl.h遗失了

时间:2014-01-08 00:13:34

标签: c++ macos

我无法让AssaultCube在Mac上编译。我已经下载了最新的源代码,并在里面打开了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也无法编译。

1 个答案:

答案 0 :(得分:1)

我发现了问题。他们的项目文件搞砸了。首先,您必须重新链接所有库。在源代码中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启动器/游戏版本,并使用符号链接({{ 1}})您刚刚构建到ln -s [source] [destination]的{​​{1}}。应该替换现有的.app。
  • 全套。编辑,构建并打开刚刚符号链接的启动器进行测试。