我有一个包含嵌入式框架的应用程序。我想在构建项目时从这些框架中删除标头。但是,应用程序包装器中还有其他标题我不想删除。 (我正在为C和C ++编写一个集成开发环境,必须包含头文件才能使捆绑的编译器工作。)我有一个Run Script阶段,它使用Unix find
工具来定位和删除{{1嵌入式框架中的{}和Headers
目录(以及指向它们的符号链接)。当我构建用于Xcode的调试器时,它工作正常。
但是,当我使用Xcode的Archive命令执行发布时,PrivateHeaders
变量不再正确扩展。调查表明它指向一个不存在的目录。据推测,Xcode会在归档过程中自动删除此目录,然后才能在Finder中打开它并查看其内容。
如何在运行脚本构建阶段获取${BUILT_PRODUCTS_DIR}
包目录的路径,该阶段在创建Xcode存档时可以正常工作?然后,我可以使用.app
和find
变量从嵌入式框架中删除标头。
我已经尝试使用Xcode方案中的后期操作删除标头,但这不会正常工作,因为它会删除所有头文件,而不仅仅是嵌入式框架中的文件。这是因为方案后期操作无法找到${FRAMEWORKS_FOLDER_PATH}
目录。 (我尝试使用“提供构建设置”弹出菜单,我已通过.app
验证它确实正确导出了设置,但仍无法找到printenv
目录。 )
答案 0 :(得分:1)
我为自己想出来了。当我归档我的项目并在Archive下添加Run Script post-action时,我进入了我正在使用的方案。以下是我使用的脚本的内容:
find "${ARCHIVE_PRODUCTS_PATH}/${INSTALL_DIR}/${FRAMEWORKS_FOLDER_PATH}" \
-name "Headers" -exec rm -r {} \;
find "${ARCHIVE_PRODUCTS_PATH}/${INSTALL_DIR}/${FRAMEWORKS_FOLDER_PATH}" \
-name "PrivateHeaders" -exec rm -r {} \;
请注意,如果您自己执行此操作,则必须将虚构的INSTALL_DIR
变量替换为应用包装器的位置。您可以在应用程序目标的“构建设置”屏幕中找到它;寻找"安装目录"。 (app包装器的名称是FRAMEWORKS_FOLDER_PATH
变量的一部分,这就是为什么你上面没有看到它。)