13

I have started a new project in Xcode by duplicating an existing folder, because my new app will have a lot of common features with the old one.

The problem is that the new app won't be using a framework I used in the old app. When I deleted the framework, of course all files including that framework raised errors.

Basically I want to disable all syntax checks, dependency checks, etc. on many files. I want Xcode to ignore these files, although they are in the project tree. Later when I revise them I will manually enable them again. This way I can compile and test my small changes for errors without fixing all errors it causes in the "not revised" files, which I will be fixing in the future anyway.

I could delete them from the project tree and then add them again one by one when my job's done, but I don't want to do this because my project tree might get messed up and there should really be another way to accomplish this.

I tried removing those files from all target memberships, but it didn't help.

4

4 回答 4

22

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

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

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

示例它的外观: 在此处输入图像描述

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

于 2014-06-03T08:34:37.743 回答
18

在 Xcode 9 中,我不确定旧版本,请访问:

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

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

Bellow 是一个示例,说明我如何排除所有方案的开头dev-和结尾的所有文件,.cc但为模拟器构建的调试方案除外。所有 Debug Simulator 构建都排除以 开头release-和结尾的文件.cc

在此处输入图像描述

希望这可以帮助!!

更新

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

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

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

于 2017-10-27T20:15:59.737 回答
0

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

于 2012-09-26T11:46:46.327 回答
0

在这里查看答案

Xcode:是否有位置/标志来防止类编译?

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

于 2012-09-26T11:46:00.973 回答