【问题标题】:Disabling some files in Xcode project from compilation从编译中禁用 Xcode 项目中的某些文件
【发布时间】:2012-09-18 00:31:34
【问题描述】:

我通过复制现有文件夹在 Xcode 中启动了一个新项目,因为我的新应用程序将与旧应用程序有很多共同的功能。

问题是新应用不会使用我在旧应用中使用的框架。当我删除框架时,当然包括该框架在内的所有文件都会引发错误。

基本上我想禁用许多文件上的所有语法检查、依赖性检查等。我希望 Xcode 忽略这些文件,尽管它们在项目树中。稍后当我修改它们时,我将再次手动启用它们。这样我就可以编译和测试我的小改动以找出错误,而无需修复它在“未修改”文件中导致的所有错误,无论如何我将在未来修复这些错误。

我可以从项目树中删除它们,然后在我的工作完成后将它们一个一个地添加,但我不想这样做,因为我的项目树可能会搞砸,应该有另一种方法来完成这个。

我尝试从所有目标成员中删除这些文件,但没有帮助。

【问题讨论】:

    标签: ios xcode


    【解决方案1】:

    在 Xcode 9 中,我不确定旧版本,请转到:

    构建设置 -> 构建选项 -> 排除的源文件名

    添加您想要排除的所有文件名。您甚至可以进行通配符匹配。

    Bellow 是我如何排除所有以dev- 开头并以.cc 结尾的文件的示例,用于除为模拟器构建的调试方案之外的所有方案。所有调试模拟器构建排除以release- 开头并以.cc 结尾的文件

    希望这会有所帮助!

    更新

    我在框架方面遇到了类似的问题,您也可以使用此功能排除框架嵌入到您的应用中!

    我的问题是我有 2 个框架,一个是为模拟器构建的,另一个是为 ARM 构建的。 iTunes Connect 抱怨我在应用程序中加入了模拟器。

    如果您有许多框架,这也有助于减小应用程序的大小。

    【讨论】:

    • 天哪,这太神奇了。我花了一天时间与存档中的重复框架作斗争?
    • 你的回答帮我解决了this problem,但是又出现了另一个问题。我的代码无法找到被排除的文件。我需要从编译中排除该文件,但我仍然需要能够使用 Bundle.path(...) 访问该文件。
    • 这也适用于框架!只需添加名称即可排除整个框架。
    【解决方案2】:

    如果您需要删除大量文件,您可以创建用户定义的构建设置,该设置应称为 EXCLUDED_SOURCE_FILE_NAMES。并添加文件名或模式。

    在我的情况下,我选择了我想省略一些文件的目标,编辑器 -> 添加构建设置 -> 添加用户定义的设置(起初它以某种方式变灰。我选择了项目文件(就在目标上方)然后重新选择目标文件并能够创建用户定义的设置)-> 将其命名为 EXCLUDED_SOURCE_FILE_NAMES -> 值类似于 PREFIX*

    当然,您可以为整个项目创建用户定义的设置,这样所有目标都将拥有它。

    示例外观:

    原答案:http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

    【讨论】:

    【解决方案3】:

    作为肮脏的黑客,您可以尝试不排除文件,而是使用 #ifdef NotCompile + #endif 排除其代码,因为它在 C\C++ 中使用 .h 完成,并在 YOURPROJECT-prefix.pch 中添加\删除 #define NotCompile

    【讨论】:

      【解决方案4】:

      在这里查看答案

      Xcode: Is there a location/flag to prevent a Class from compiling?

      简而言之,从项目目标中删除文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        相关资源
        最近更新 更多