Какая разница между SRCROOT и PROJECT_DIR?

В Xcode нам нужно настроить много путей в настройках сборки, тогда мы будем иметь дело с $ (SRCROOT) и $ (PROJECT_DIR), но что разница между ними, вы можете показать мне пример, спасибо большое.

Ответ 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)

Ответ 2

SRCROOT и PROJECT_DIR - одни и те же макросы имеют одинаковый эффект. PROJECT_DIR имеет смысл говорить о фреймворках.

Ответ 3

PROJECT_DIR: расположение каталога .xcodeproj.

SRCROOT: псевдоним для SOURCE_ROOT
SOURCE_ROOT: расположение исходного кода для этого проекта. Определяет каталог, содержащий целевые исходные файлы.

Подробнее здесь, здесь