使用Homebrew安装的SDL2在Xcode中使用

18

我已经使用Homebrew安装了SDL2,但现在不知道如何确保Xcode可以使用它!我导入了创建的库并将其添加到项目的构建阶段选项卡中。但是当我尝试构建时,出现错误“未找到SDL2/SDL.h”。

3个回答

32

要在Xcode上使用SDL2,您必须设置两个东西(这对于一般的SDL是必需的):

  • 头文件路径(以便Clang可以使用-Iheader/path编译)
  • 查找.dylib文件的路径,以将其链接到项目中(因为使用brew时没有真正的.framework

要知道正确的路径,您应该调用sdl2-config --cflagssdl2-config --libs。在我的系统上,它们会产生以下结果:

:~jack$ /usr/local/bin/sdl2-config --cflags
-I/usr/local/include/SDL2 -I/usr/X11R6/include -D_THREAD_SAFE

:~jack$ /usr/local/bin/sdl2-config --libs
-L/usr/local/lib -lSDL2

现在只需将第一个粘贴到您的项目的其他C标志中,将另一个粘贴到其他链接器标志字段中,然后您就可以开始了。

您可以在正确的字段中设置它们,即Header Search Paths用于-ILibrary Search Path用于-l,但结果是相同的。


抱歉最近很忙没能及时回复!感谢你的回答。我有几个问题,当我将路径添加到其他C标志和其他链接器标志中时,我可以访问SDL,但它不是像#include <SDL2/SDL.h>那样嵌套的。我该如何确保这个工作?还有,如果我想以正确的方式做到这一点,应该将哪些路径放入头文件搜索路径和库搜索路径中?因为我尝试过了,但还没有成功。 - Jaap Wijnen
哦,还有,我该如何让它也与SDL_ttf一起工作?因为我找不到它!虽然使用了正确的字段和SDL2/SDL.h的嵌套已经解决了,谢谢! - Jaap Wijnen
好的,没关系,我只是犯了几个错误,抱歉!感谢你的回答! - Jaap Wijnen
只是一点小提示,如果你只添加头文件和库目录到项目的“头文件搜索路径”和“库搜索路径”,那么你将会分别遇到错误,因为为了让Xcode使用这些库,你需要告诉Xcode使用例如-lSDL2库,所以我建议你使用上面答案提供的第一种方法。 - Our

4
  1. https://brew.sh 安装 Homebrew。

  2. 在终端中键入brew install sdl2

  3. 然后显示框架路径(在 xCode 中选择项目文件 >> 构建设置 >> 头文件搜索路径),并使用 cmd+shift+g 键入 /usr/local/include。

  4. 在“常规”“框架与库”中放置 libSDL2-2.0.0.dylib(它在这里/usr/local/Cellar/sdl2/2.0.14_1/lib)。

  5. 最重要的是,在“签名和能力”中检查“禁用库验证”。

完成这些步骤之后,代码开始在我的计算机上运行。


1
不要重复你的答案。如果你(或其他人)决定稍后更新/修改它,你将不得不检查每一个答案。我建议只发布一次,然后在其他问题的评论中发布链接。 - HolyBlackCat

1
  1. 使用brew搜索sdl2

  2. 使用brew安装sdl2、sdl2_image、sdl2_mixer、sdl2_net和sdl2_ttf

  3. 配置xcode Build Settings --> All --> Search Paths --> Header Serch Paths
    --> /usr/local/include

  4. 配置Xcode General ->添加Frameworks and Libraries --> libSDL2-2.0.0.dylib

  5. 测试你的代码

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

using namespace std;

int main() {

    if(SDL_Init(SDL_INIT_VIDEO) < 0) {
        cout << "SDL init failed." << endl;
        return 1;
    }

    cout << "SDL Init succeeded." << endl;

    SDL_Quit();

    return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接