Ответ 1
Заменяемый на практике, в то время как документация делает эти тонкие теоретические различия:
-
SRCROOT
путь к каталогу. Идентифицирует каталог, содержащий исходные файлы целей: содержит путь к файлу project, который определяет цель.
SOURCE_ROOT
- недокументированный псевдонимSRCROOT
-
PROJECT_DIR
Идентифицирует каталог, содержащий проект (.xcodeproj
)$(PROJECT_DIR)/build
используется для создания значения по умолчанию для:- Путь промежуточных файлов сборки
OBJROOT
- Путь к продуктам
SYMROOT
Обычно эти пути не устанавливаются на цель, а устанавливаются для каждого проекта или для каждого пользователя.
- Путь промежуточных файлов сборки
-
PROJECT_FILE_PATH
Определяет сам проект.
Эквивалентно$(PROJECT_DIR)/$(PROJECT_NAME).xcodeproj
Концептуально различный (# 1 - это проект, который определяет target, а # 2 - проект независимо от какой-либо цели), они всегда указывают на одно и то же местоположение, поскольку вы, по сути, всегда создавая цель.
Ссылки
Xcode 8.3 Ссылка на параметры настройки
Руководство по созданию сборки Xcode (Retired 2016-09-29)