Что такое $(наследуется) в настройках пути поиска XCode?

Что $(inherited) настройка пути поиска?

Я изменил настройки пути поиска заголовка и библиотеки в отношении OpenSSL для iPad, и эта проблема, наряду с рекурсивной опцией для данного пути, была основной причиной.

Когда я переставил мои пути поиска, чтобы сначала посмотреть в каталогах, а затем в $(inherited), сборки iPad работали.

5 ответов

Решение

Я тоже ищу документацию. Но я сделал опыт, что $(inherited) может использоваться для наследования параметров сборки от уровня проекта до целевого уровня. Когда вы определяете пути поиска библиотеки или заголовка на уровне проекта, вы можете использовать $(inherited) в настройках сборки цели использовать эти пути поиска в путях поиска целей проекта.

Если вы перейдете в настройки целевой сборки и переключитесь в режим просмотра уровня

Альтернативный текст

Вы можете увидеть поток inherited справа налево

Resolved <- Target <- xcconfig <- Project <- iOS Default

Так в inherited в Target означает, что Target наследует настройки от xcconfig и Project

Пример переопределения переменных параметров сборки, установленных на уровне проекта или цели, путем переназначения значения этой переменной в файле 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

ДОБАВЛЕНИЕ: с $(inherited) Настройки сборки-> Путь поиска библиотеки автоматически заполняется, когда вы добавляете библиотеку к цели, щелкая в правой панели Целевое членство. Это не происходит иначе.

Xcode $(унаследовано)

[Синтаксис Xcode ${&amp;lt;variable_name&amp;gt;}]

Переменная Xcode может быть определена на разных уровнях (Project, .xcconfig, Target, Default). Когда вы используете Build Settings -> Levelsна вкладке вы можете проверить иерархию и разрешенный результат

использует значение переменной с суперуровня .

Обратите внимание на несколько вещей:

  • Это полезно, когда вы должны объединить значение результата, например $(inherited)-myPrefix. Это не так полезно использовать в качестве отдельного выражения, потому что даже когда вы удаляете или любое другое значение из наследника (цель является преемником проекта), Xcode автоматически изменяет это значение на основе предшественника

  • Вы можете установить на уровне проекта и уровне цели, поэтому иерархия результатов не является постоянной.

      Resolved <- Target <- Target .xcconfig <- Project <- Project .xcconfig <- Default

Например Target = $(inherited)

на уровне проекта

.xcconfig на целевом уровне

[.xcconfig]

[CocaPods наследуют!]

Другие вопросы по тегам