Что такое $(унаследованный) в настройках пути поиска Xcode?
Каков путь пути поиска $(inherited)
?
Я изменил настройки пути к заголовку и библиотеке для OpenSSL для iPad, и эта проблема вместе с рекурсивным вариантом для данного пути была основным виновником.
Когда я перестроил пути поиска, чтобы сначала посмотреть в директории, а затем в $(inherited)
, были созданы iPad-сборки.
Ответы
Ответ 1
Я тоже ищу документацию. Но я сделал опыт, что $(inherited)
можно использовать для наследования параметров сборки от уровня проекта до целевого уровня. Когда вы определяете пути поиска библиотек или заголовков на уровне проекта, вы можете использовать $(inherited)
в настройках целевой сборки, чтобы использовать эти пути поиска в путях поиска целевых объектов проекта.
Ответ 2
Если вы перейдете к настройкам целевой сборки и переключитесь в режим уровня
![Alt text]()
Вы можете видеть поток inherited
справа налево
Resolved <- Target <- xcconfig <- Project <- iOS Default
Итак, в inherited
в Target означает, что Target наследует настройки из xcconfig и Project
Ответ 3
Пример переопределения переменных настройки сборки, установленных на уровне проекта или цели, путем переназначения значения этой переменной в файле xcconfig.
// Variable set in the project file, previous level
OTHER_LDFLAGS = -ObjC
// lib.xcconfig
OTHER_LDFLAGS = -framework Security
^ При компиляции с этим предыдущее значение OTHER_LDFLAGS -ObjC
будет переопределено новым значением -framework Security
.
Пример наследования переменных настройки сборки, установленных на уровне проекта или цели, путем добавления предыдущего значения этой переменной в файле xcconfig. Думайте о $(inherited)
как о специальной переменной, которую можно использовать для получения существующего значения переменной, чтобы присвоение этой же переменной не было разрушительным.
// Variable set in the project file, previous level
OTHER_LDFLAGS = -ObjC
// lib.xcconfig
OTHER_LDFLAGS = $(inherited) -framework Security
^ При компиляции с этим значение OTHER_LDFLAGS будет -ObjC -framework Security
.
Пример найден на https://pewpewthespells.com/blog/xcconfig_guide.html
Ответ 4
ДОПОЛНЕНИЕ:
с $(inherited)
Настройки сборки- > Путь к библиотеке автоматически заполняется, когда вы добавляете библиотеку в цель, щелкнув правой кнопкой в целевом членстве. Это не происходит иначе.
Ответ 5
Сохранение существующих значений
Чтобы добавить, а не заменить существующие определения, используйте переменную $(inherited)
следующим образом:
BUILD_SETTING_NAME = $(inherited)additional value
Обычно вы делаете это для создания списков значений, таких как пути, в которых компилятор ищет каркасы для поиска включенных заголовочных файлов FRAMEWORK_SEARCH_PATHS
:
FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)
Xcode назначает унаследованные значения в следующем порядке (от низшего к высшему приоритету):
- Платформа по умолчанию
- Настройки сборки файла проекта XCode
- Файл xcconfig для проекта Xcode
- Настройки активной целевой сборки
- Файл xcconfig для активной цели
Вы можете получить награду за это на практике, используя вкладку Levels
![enter image description here]()
Источник здесь