Отключение некоторых файлов в проекте XCode от компиляции
Я начал новый проект в XCode с дублирования существующей папки, потому что у моего нового приложения будет много общих функций со старой.
Проблема в том, что новое приложение не будет использовать структуру, которую я использовал в старом приложении. Когда я удалял фреймворк, конечно, все файлы, включая этот фреймворк, вызывали ошибки.
В основном я хочу отключить все проверки синтаксиса, проверки зависимостей и т.д. Для многих файлов. Я хочу, чтобы Xcode игнорировал эти файлы, хотя они находятся в дереве проекта. Позже, когда я пересмотрю их, я снова включу их вручную. Таким образом, я могу скомпилировать и протестировать свои небольшие изменения на наличие ошибок, не исправляя все ошибки, которые они вызывают, в "не исправленных" файлах, которые я буду исправлять в будущем.
Я мог бы удалить их из дерева проекта, а затем добавить их один за другим, когда моя работа будет выполнена, но я не хочу этого делать, потому что моё дерево проекта может испортиться, и действительно должен быть другой способ сделать это.
Я пытался удалить эти файлы из всех целевых членств, но это не помогло.
Ответы
Ответ 1
Если вам нужно удалить много файлов, вы можете создать User-Defined Build Setting, который должен быть назван EXCLUDED_SOURCE_FILE_NAMES. И добавьте имена файлов или шаблоны.
В моем случае я выбрал цель, которую я хотел опустить некоторые файлы, Editor → Add Build Setting → Add User-Defined Setting (сначала это выкрашено каким-то образом). Я выбрал файл проекта (чуть выше TARGETS), затем повторно выбранный целевой файл и смог создать пользовательскую настройку) → name it EXCLUDED_SOURCE_FILE_NAMES → значение что-то вроде PREFIX *
Конечно, вы можете создать User-Defined Setting для всего проекта таким образом, чтобы все цели имели его.
Пример, как это может выглядеть:
![enter image description here]()
Оригинальный ответ: http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html
Ответ 2
В Xcode 9 я не уверен насчет более старых версий, перейдите по ссылке:
Настройки сборки → Параметры сборки → Имена исключенных исходных файлов
Добавьте все имена файлов, которые вы хотите исключить. Вы даже можете сделать сопоставление по шаблону.
Ниже приведен пример того, как я исключил все файлы, начиная с dev-
и заканчивая .cc
для всех схем, кроме схемы отладки, созданной для симулятора. Все сборки Debug Simulator исключают файлы, начиная с release-
и заканчивая .cc
![enter image description here]()
Надеюсь это поможет!!
ОБНОВИТЬ
У меня была похожая проблема с фреймворками, и вы тоже можете исключить фреймворки из своего приложения!
Моя проблема заключалась в том, что у меня было 2 фреймворка, один был построен для симулятора, а другой - для ARM. iTunes Connect пожаловался на меня, включая симулятор с приложением.
Если у вас много фреймворков, это поможет уменьшить размер приложения.
Ответ 3
Посмотрите здесь ответ
Xcode: существует ли флаг location/flag для компиляции класса?
В двух словах удалите файл из целевого объекта проекта.
Ответ 4
В качестве грязного взлома вы можете попробовать исключить не файлы, а его код, используя #ifdef NotCompile + #endif
, как это было сделано в C\С++ с .h с добавлением\удаление #define NotCompile
в YOURPROJECT-prefix.pch