使用自制软件安装 SDL2 和 Xcode
Posted
技术标签:
【中文标题】使用自制软件安装 SDL2 和 Xcode【英文标题】:Using homebrew installed SDL2 with Xcode 【发布时间】:2015-03-16 23:08:44 【问题描述】:我已经使用 Homebrew 安装了 SDL2,但现在我不知道如何确保 Xcode 可以使用它!我导入了创建的库并将其添加到我的项目的构建阶段选项卡中。但是当我尝试构建时,我得到了错误'SDL2/SDL.h' not found
【问题讨论】:
【参考方案1】:为了能够在 Xcode 上使用 SDL2,您必须设置两件事(通常是 SDL 所必需的):
在哪里可以找到头文件(以便 Clang 可以使用-Iheader/path
编译)
在哪里可以找到 .dylib 以将其链接到项目(因为使用 brew,您没有真正的 .framework
)
要知道正确的路径,您应该调用sdl2-config --cflags
和sdl2-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
现在只需将第一个粘贴到您项目的other C flags
和另一个粘贴到other linker flags
字段中,您就可以开始了。
您可以在正确的字段中设置它们,Header Search Paths
对应于-I
,Library Search Path
对应于-l
,但结果将是相同的。
【讨论】:
抱歉,实在是太忙了没能回复!感谢您回答几个问题,尽管当我将路径添加到其他 C 标志和其他链接器标志时,我可以访问 SDL,但它不像#include <SDL2/SDL.h>
那样嵌套我如何确保它有效?如果我想以正确的方式进行操作,我应该将哪些路径放入标题搜索路径和库搜索路径中?因为我尝试过这样做,但还没有让它发挥作用。
哦,我如何让它与 SDL_ttf 一起使用?因为找不到! SDL2/SDL.h 的嵌套和使用正确的字段虽然谢谢!
好吧,没关系,我只是犯了一些错误,抱歉!感谢您的回答!
附注一下,如果你只将 header 和 lib 目录添加到项目的 Headr Search Paths
和 Library Search Paths
,你会分别得到错误,因为为了 Xcode 使用这些库,您需要告诉 Xcode,例如使用 -lSDL2
库,所以我建议您使用上述答案提供的第一种方法。【参考方案2】:
从https://brew.sh安装安装的自制软件
在终端输入brew install sdl2
然后显示框架的路径(在xCode中选择项目文件>>构建设置>>头文件搜索路径)并使用cmd+shift+g输入/usr/local/include
在“通用”“框架和库”中放入 libSDL2-2.0.0.dylib(此处为 /usr/local/Cellar/sdl2/2.0.14_1/lib)
最重要的检查“签名和功能”中的“禁用库验证”
在这些步骤之后,代码开始为我工作。
【讨论】:
不要重复你的答案。如果您(或其他人)决定稍后更新/修改它,您将不得不重新审视一个。我建议发布一次,然后在另一个问题的 cmets 中发布链接。【参考方案3】:brew search sdl2
brew install sdl2 sdl2_image sdl2_mixer sdl2_net sdl2_ttf
config xcode Build Settings --> All --> Search Paths --> Header Serch Paths --> /usr/local/include
配置 Xcode 常规 -> 添加框架和库 --> libSDL2-2.0.0.dylib
测试你的代码
#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;
【讨论】:
以上是关于使用自制软件安装 SDL2 和 Xcode的主要内容,如果未能解决你的问题,请参考以下文章