Цель… переопределяет настройку сборки `OTHER_LDFLAGS`, определенную в файле Pods / Pods.xcconfig

237

Я включил SpatialIiteв проект XCode, который использует заголовочный файл Proj.4, только один заголовок. Оба проекта Xcode и имеют статические цели.

Я пытаюсь перейти с подмодуля git на Cocoapods. Поскольку кажется, что статические цели сложно использовать с Cocoapods, я просто хочу, чтобы проект был построен обычным способом. Я сделал подспец для Proj.4. После написания подфайла SpatialLiteя получил предупреждения:

[!] The target `SpatialiteIOS [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

Я читаю эту проблему, но совершенно не понимаю, что означают предупреждения и что я могу сделать, чтобы это исправить.

Кроме того, проблема, когда я открываю рабочее пространство, а также открываю проект SpatiaLite в одиночку, оба ориентированы на Mac OSX 64, когда предполагается, что это проект iOS. Мой подфайл действительно говорит "платформа: IOS".

Huggie
источник
2020 год - для всех, кто борется с этой назойливой проблемой. Это действительно только вызвано (Сюрприз! :)) Facebook. Как было объяснено ЗДЕСЬ, firebase.google.com/docs/auth/ios/firebaseui «Если вы предпочитаете, вы можете добавить только компонент Auth и поставщиков, которых хотите использовать ...», как только вы удалите опцию facebook, проблем нет , : /
Толстяк

Ответы:

543

Это определенно работает большую часть времени:

Перейдите к своей цели Настройки сборки -> Другие флаги компоновщика -> двойной щелчок. Добавить $(inherited)в новую строку.

Если у вас есть проблема с "... target переопределяет параметр сборки GCC_PREPROCESSOR_DEFINITIONS, определенный в ...", тогда вы должны добавить $ (унаследованный) к вашим параметрам настройки сборки -> Макросы препроцессора

Анкиш джайн
источник
29
Я бы расширил этот ответ. Если у вас есть проблема с "... target переопределяет параметр GCC_PREPROCESSOR_DEFINITIONSсборки, определенный в ...", то вы должны добавить $ (унаследованный) к вашей цели. Параметры сборки -> Макросы препроцессора
Libor Zapletal
1
я подозреваю, что "... target переопределяет INSERT_YOUR_MISSING_DEFINITION ...", тогда вы должны добавить $ (унаследованный) к нему. как ни странно, мой xcode показывал $ (унаследованный) немного слабым, как по умолчанию. я отредактировал и просто перепечатал то же самое. ошибка исчезла ..
Джо
3
@joe все еще не работает для меня. Я попробовал все эти предложения, но когда я снова запускаю установку pod, ошибки сохраняются. Я внес изменения как в другие флаги компоновщика, так и в макросы препроцессора. В обоих случаях ничего не отображается, пока вы дважды не щелкнете по каждой строке в других флагах компоновщика и макросах препроцессора. Затем вы можете увидеть, что $ (унаследованный) был добавлен. Я пытался удалить и прочитать. Я попытался закрыть и снова открыть xcode. Ничто не исправляет сообщения об ошибках, когда я печатаю в pod install.
JeffB6688
1
@msmq Прошло уже много времени, но помнишь ли ты обходной путь, который попробовал, и он заработал? $(inherited)уже в верхней строке, но у меня это не работает: /
Костас Димакис
1
я добавил это все еще установка ошибки бросает ту же ошибку.
rohitwtbs
75

Существует конфликт между вашими настройками сборки и настройками сборки по умолчанию, которые хочет Cocoapods. Чтобы увидеть настройки сборки Cocoapods, просмотрите файл (ы) .xcconfig в Pods / Target Support Files / Pods - $ {PROJECTNAME} / в своем проекте. Для меня этот файл содержит:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Commando"
OTHER_LDFLAGS = -ObjC -framework Foundation -framework QuartzCore -framework UIKit
PODS_ROOT = ${SRCROOT}/Pods

Если вы довольны настройками Cocoapods, перейдите в Build Settings для вашего проекта, найдите соответствующую настройку и нажмите клавишу Delete. Это будет использовать настройку Cocoapods.

С другой стороны, если у вас есть пользовательский параметр, который вам нужно использовать, добавьте $ (наследуемый) к этому параметру.

phatmann
источник
У меня также была эта проблема, я смог удалить -ObjC, и это решило эту проблему. Однако, когда я пытался построить проект, я получаю сообщение об ошибке, указывающее на то, что целевая библиотека pod не может быть найдена: «ld: библиотека не найдена для -lPods-MyProject». Вы видели что-то подобное?
Родерик Кэмпбелл
3
Я снова столкнулся с этим. Я не уверен, что $ (унаследованные) средства. Где я могу добавить это?
Хагги
@RodericCampbell Я обнаружил, что удаление -ObjC из проекта мне подходит, и я не вижу твоей ошибки.
Хагги
1
Хм, но мне нужен флаг -ObjC для этого во время выполнения, так как я получил категории.
Хагги
3
OTHER_LDFLAGS = Другие связанные флаги, HEADER_SEARCH_PATHS = Пути поиска в заголовке, GCC_PREPROCESSOR_DEFINITIONS = Макросы препроцессора. @kraftydevil, какие настройки вы пытаетесь удалить?
phatmann
30

Я видел эти 3 ошибки для команды pod в терминале

pod install

[!] Цель MY_APP [Debug / Release] переопределяет HEADER_SEARCH_PATHS ...
[!] Цель MY_APP [Debug / Release] переопределяет OTHER_LDFLAGS ...
[!] Цель MY_APP [Debug / Release] переопределяет GCC_PREPROCESSOR_DEFINITIONS .. ,

Все эти 3 ошибки исчезли бы, добавив $ (наследуется) к

  1. Пути поиска в заголовке
  2. Другие флаги линкера
  3. Макросы препроцессора

в проекте -> Цель -> Настройки сборки

И теперь команда будет работать без каких-либо ошибок

pod install
zeeawan
источник
Вышесказанное сработало для меня, когда простого изменения флага Other Linker Flagsбыло недостаточно.
JaredH
21

В своем проекте найдите Target -> Build Settings -> Other Linker Flags, выберите Other Linker Flags, нажмите delete(клавиатура Mac) / Backspace(обычная клавиатура), чтобы восстановить настройку. Меня устраивает.

Пример:

Перед введите описание изображения здесь

После введите описание изображения здесь

SamirChen
источник
1
мы удаляем настройки, уже расположенные в других флагах компоновщика? или мы сохраняем их, а также добавляем $ (наследуется) ??
isJulian00
20

Просто у меня была похожая проблема, когда я бежал pod install, я видел следующие предупреждения / ошибки (связанные с CLANG_CXX_LIBRARY):

Ошибка / Предупреждение от Cocoapods

[!] The `Project [Debug]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The `Project [Release]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

Исправление

  1. Выберите свой, Projectчтобы вы могли видеть Build Settings.
  2. Выберите свой Target( AppNameпод Targets)
  3. Найти C++ Standard Library(вероятно, оно будет выделено жирным шрифтом - это означает, что оно переопределено).
  4. Выберите линию (чтобы она была выделена синим цветом) и нажмите ⌘ + DELETE(Ctrl + Backspace)

Линия больше не должна быть выделена жирным шрифтом, и если вы запустите, pod installпредупреждения / ошибки должны исчезнуть.


Наглядное пособие

CLANG_CXX_LIBRARY Ошибка / Предупреждение с Cocoapods

индиго
источник
12

Если Xcode жалуется при связывании, например, Библиотека не найдена для -lPods, он не обнаруживает неявные зависимости:

Перейдите в Product> Edit Scheme. Нажмите на Build. Добавьте статическую библиотеку Pods. Очистите и соберите снова.

Амит Саксена
источник
Я попробовал способ, который вы предложили, но он не показывает последние установленные фреймворки по файлам pod, больше предложений по исправлению ошибок флага компоновщика. @Amit Saxena
Anilkumar iOS ReactNative
11

Для меня проблема была с моими целями испытаний. У меня уже был $(inherited)флаг в моей главной цели приложения.

Я добавил его в флажки MyAppTests Other Linker. После этого при запуске pod installпредупреждение исчезло. введите описание изображения здесь

Андреас Олссон
источник
6

Первая строка ссылки ниже спасла мой день:

Чтобы добавить значения в параметры из параметров сборки вашего проекта, добавьте в список значений символ $ (наследуется).

https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq

Кроме того, не забудьте вставить эту строку в начале вашего файла pod:

platform :iOS, '5.0'
Николай Шубенков
источник
6

Я добавил $ (наследуется), но мой проект все еще не компилировался. Для меня проблемой был флаг «Сборка только для активной архитектуры», мне пришлось установить его на ДА.

Sanjana
источник
если проект компилируется, можем ли мы просто игнорировать предупреждения?
isJulian00