Xcode SDL 资源文件夹

Posted

技术标签:

【中文标题】Xcode SDL 资源文件夹【英文标题】:Xcode SDL resources folder 【发布时间】:2013-05-16 12:51:21 【问题描述】:

我正在 Xcode 中创建一个 SDL 项目,并且我有一个名为 resources 的文件夹来存储我的图像。为了让我的 SDL 应用程序使用 SDL_LoadBMP 访问这些图像,资源文件夹需要与可执行文件位于同一文件夹中。我不想每次我想运行应用程序时都将我的资源复制并粘贴到“/Users/admin/Library/Developer/Xcode/DerivedData/SDL_app-awvygturnguyeqgwpjowmouadbjf/Build/Products/Debug”文件夹中(我不知道为什么所有随机字符都在文件夹链接中)。我一直在关注 Lazy Foo 的第一个 SDL 教程:http://lazyfoo.net/SDL_tutorials/lesson01/index2.php,我正在尝试在屏幕上显示图像。我不需要在这里显示我的代码,因为它与我链接到的教程完全相同,除了 SDL_LoadBMP("hello.bmp") 是 SDL_LoadBMP("resources/images/hello.bmp")。只要我将资源文件夹复制到产品目录中,该应用程序就会运行。我打算展示文件夹的图像等等,但我没有足够的“声誉”。

【问题讨论】:

【参考方案1】:

为了确保文件夹被复制,您需要将该文件夹添加到您的 Xcode 项目中,然后在您的 Build Phases 中创建一个 Copy 步骤。默认情况下,系统标识为资源的项目(.strings 文件、.xib 文件等)有一个复制阶段。但是,对于其他文件,您需要专门创建一个复制阶段。

为此:

    在 Xcode 中,选择您的项目和目标,然后选择 Build Phases 选项卡 点击Add Build Phase按钮并选择Add Copy Files 选择复制的Destination位置(这是层次结构的“顶部”,您也可以使用Subpath字段指定子目录) 现在将文件夹或文件从项目导航器拖到新的复制阶段

当您构建可执行文件时,文件将按照您的指示进行复制。

如果您的 SDL 文件在 Xcode 之外被修改,您可能希望将该文件夹作为文件夹引用而不是作为单个文件导入。这可能有点棘手,但它会导致 Xcode 复制文件夹的当前内容,而不仅仅是您添加到项目中的项目。否则,只需将 SDL 文件直接导入 Xcode 项目并单独管理即可。

【讨论】:

感谢您的帮助,是否实际上将资源打包在应用程序文件中,因此结果只有一个文件(例如 iMovie.app)。该产品不是这些软件包之一(.app),文件类型是 Unix 可执行文件。 这是一个不同的问题,您可能想单独提出,但我不知道有一种方法可以自动完成。如果数据都是只读的,您可以使用某种多文件格式并将数据附加到 DATA 段中的可执行文件中,并在启动时或通过打开另一个只读通道到可执行文件从磁盘读取它对那个 DATA 段有一个偏移量,但这是一个非常复杂的解决方案。 hmm 也许我会问另一个问题,因为我想知道例如 GIMP 是如何将所有应用程序内容卡在一个漂亮的小 .app 文件中的,实际上如果你去“显示包内容”,你可以四处浏览存档并找到“Unix 可执行文件”。我认为 .app 类似于 Java 的 .jar(java 存档)文件。 好的,我以为您是在表示您不希望将它放在.app 文件中。此时,听起来您正在尝试为 Unix 可执行文件创建 .app 文件包装器,对吧?这与可可的工作方式没有什么不同,只是多了一点工作。如果您对此提出不同的问题,我也可以调查一下,我认为我们有一些案例可以做到这一点。

以上是关于Xcode SDL 资源文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:可执行文件找不到 SDL2.framework

为啥 xcode 播放声音文件时没有任何资源路径?

包含语句:找不到 SDL/SDL.h 文件

如何使用 Swift 2 和 Xcode 7 读取 Playground 文本资源文件

Xcode iOS Build - 仅将特定子文件夹复制为捆绑资源

XCode 4.5.2:如何协调“无法附加到进程 ID 0”与对资源文件夹的需要?