Xcode复制文件构建阶段 - "目标"选项的含义是什么?

10

Xcode 复制文件编译阶段 目标地点

Xcode 文档没有详细解释每个目标地点相对于我的应用程序包在磁盘上的映射位置。

如果以这个应用程序作为示例,有人能给出一个规范的答案,说明每个目标地点将文件放置在此目录结构的哪里吗?

Xcode 目录结构


那个目录是应用程序包(复制文件配置所指的内容)吗? - trojanfoe
我不相信它们是同一件事;Xcode想知道您希望将文件复制到应用程序包中的哪个位置,而您展示的是应用程序的容器文件夹。但我不确定。 - trojanfoe
我所追求的只是一个明确的答案,即相对于View或/891E4861-...中的哪个目标选项会将文件放置在哪里。那些选项是否就是像“Java资源”这样的子文件夹名称?哪一个是“产品目录”?等等。 - Mr. Boy
1
当然很重要,我需要知道访问应用程序中文件的路径! - Mr. Boy
不,我不觉得这很重要。不过,为什么不试一试,看看文件会被放到应用程序包中的哪里呢? - trojanfoe
显示剩余2条评论
1个回答

8
你的示例中的应用程序包是Viewer,这不是一个文件,它是一个目录。如果你点击它并选择"显示包内容",你就会看到它的余下部分。
产品目录是Viewer所写入的目录。在iOS中,你无法写入此目录。
对于iOS来说,Wrapper是Viewer内部最高级别的目录。
对于iOS来说,可执行文件与Wrapper目录相同。
对于iOS来说,资源应该放在Wrapper目录中,或者如果资源是本地化的,则放在本地化目录(例如Base.lproj等)中。
其他目录对于iOS没有意义。
尽管如此,你应该按照逻辑使用目录。使用 "Executable" 意味着 "我的可执行文件所在的目录"。不要假设目录树在内部以特定方式布置。
关于你需要知道访问文件的路径的评论,你不需要这样做(也不应该尝试)。你应该使用[NSBundle pathForResource:ofType:] 来查找文件。

这是一个使用跨平台库的C++应用程序,它使用常规路径并以目录和文件为基础进行思考。我会添加C ++标签,因为我没有意识到这在纯iOS开发中是不同的。 - Mr. Boy
1
дҪ д»Қеә”иҜҘдҪҝз”ЁbundleжқҘдёәдҪ жүҫеҲ°и·Ҝеҫ„гҖӮдёҚиҰҒиҜ•еӣҫж №жҚ®ж ‘зҡ„еҒҮи®ҫжһ„е»әе®ғгҖӮдҪ еҸҜд»ҘеңЁObjCд»Јз ҒдёӯдҪҝз”ЁNSBundle并传йҖ’з»“жһңеӯ—з¬ҰдёІпјҢжҲ–иҖ…еңЁзәҜCжҲ–C++д»Јз ҒдёӯдҪҝз”ЁCFBundleCopyResourceURLгҖӮ - Rob Napier
跨平台库通常不会给你这种奢侈的体验(我在这里使用Ogre3D),在我的情况下,我使用iOS API获取捆绑包的绝对路径,并且必须相对于该路径进行所有操作。它运行良好(碰碰木头!),是否有官方指南反对此做法? - Mr. Boy
如果您正在使用[NSBundle resourcePath]来查找资源,则可以自由地从中读取子目录。只是不要假设resources相对于bundlePath的位置。几乎您想要的每个根路径都可以通过NSBundle获得:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/occ/instm/NSBundle/resourcePath。当然,您也可以将这些传递给C++库(我经常这样做)。 - Rob Napier
啊,这种情况下我们可能有点误解了。感谢您的帮助。 - Mr. Boy
只是想提一下这个很棒的文档,其中提到 “复制文件” 构建阶段支持以下目标目录: products、wrapper、executable、resources、Java resources、Frameworks、Shared Frameworks、Shared Support、Plugins、XPC Services、System Extensions、App Clips。 - mfaani

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