1

我有一个包含嵌入式框架的应用程序。我想在构建项目时从这些框架中删除标题。但是,我不想删除应用程序包装器中的其他标头。(我正在为 C 和 C++ 编写一个集成开发环境,它必须包含头文件,以便捆绑的编译器能够工作。)我有一个运行脚本阶段,它使用 Unix工具来定位和find删除目录(以及指向的符号链接)给他们)来自嵌入式框架。当我构建用于 Xcode 的调试器时,它工作正常。HeadersPrivateHeaders

但是,当我使用 Xcode 的 Archive 命令执行发布时,${BUILT_PRODUCTS_DIR}变量不再正确展开。调查表明它指向一个不存在的目录。大概 Xcode 在归档过程中自动删除了这个目录,然后我才能在 Finder 中打开它并查看它的内容。

如何.app在创建 Xcode 存档时正常工作的运行脚本构建阶段获取包目录的路径?find然后,我可以使用和${FRAMEWORKS_FOLDER_PATH}变量从嵌入式框架中删除标头。

我已经尝试使用 Xcode 方案中的后操作删除标头,但这无法正常工作,因为它会删除所有头文件,而不仅仅是嵌入式框架中的头文件。这是因为方案后操作找不到.app目录。(我曾尝试使用“Provide Build Settings From”弹出菜单,并且通过验证printenv它确实正确导出了设置,但.app仍然找不到该目录。)

4

1 回答 1

1

我自己想通了。当我归档我的项目并在归档下添加一个运行脚本后操作时,我进入了我正在使用的方案。这是我使用的脚本的内容:

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变量替换为您的应用程序包装器的位置。您可以在应用程序目标的构建设置屏幕中找到它;寻找“安装目录”。(应用程序包装器的名称是FRAMEWORKS_FOLDER_PATH变量的一部分,这就是您在上面没有看到它的原因。)

于 2013-02-22T23:20:52.347 回答