Ціль… переосмислює налаштування збірки `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".


2020 рік - для тих, хто бореться з цією набридливою проблемою. Це насправді викликає лише (сюрприз! :)) facebook. Як пояснили ТУТ, firebase.google.com/docs/auth/ios/firebaseui "Якщо ви хочете, ви можете додати лише компонент Auth та провайдерів, які ви хочете використовувати ...", коли ви усунете варіант facebook, проблеми не виникне . : /
Fattie

Відповіді:


543

Це, безумовно, працює більшу частину часу:

Перейдіть до своїх цільових налаштувань збірки -> Інші прапори посилання -> двічі клацніть. Додати $(inherited)в новий рядок.

Якщо у вас виникли проблеми з "... ціль перевизначає налаштування збірки GCC_PREPROCESSOR_DEFINITIONS, визначене в ...", тоді ви повинні додати $ (успадковано) до своїх цільових налаштувань збірки -> макроси препроцесора


29
Я б продовжив цю відповідь. Якщо у вас виникли проблеми з "... target переорієнтовує GCC_PREPROCESSOR_DEFINITIONSналаштування збірки, визначене в ...", тоді ви повинні додати $ (успадковано) до своїх цільових Налаштування збірки -> Макроси попереднього процесу
Libor Zapletal

1
я підозрюю, що "... мета переосмислює INSERT_YOUR_MISSING_DEFINITION ...", тоді ви повинні додати $ (успадковану) до неї. як не дивно, але мій xcode показував $ (успадкований) трохи слабкий, як за замовчуванням. я відредагував і просто повторно ввів те саме. помилка зникла ..
joe

3
@joe все ще не працює для мене. Я спробував усі ці пропозиції, але коли я повторно встановив встановлення, помилки зберігаються. Я вніс зміни як до інших прапорів лінкера, так і до макросів препроцесора. В обох випадках нічого не відображається, поки ви двічі не клацнете по кожному з рядків в інших прапорах лінкерів та макросах препроцесора. Тоді ви можете бачити, що $ (успадковано) додано. Я спробував видалити та прочитати. Я спробував закрити та повторно відкрити xcode. Нічого не виправляє повідомлення про помилки під час введення в установці стручка.
JeffB6688

1
@msmq Це вже давно, але чи пам’ятаєте ви вирішення того, що ви спробували та спрацювали? $(inherited)є вже на верхній лінії, але це не працює для мене: /
Костас Дімакіс

1
я додав, що стиль установки встановить кидає ту ж помилку.
rohitwtbs

75

Існує конфлікт між налаштуваннями збірки та налаштуваннями збірки за замовчуванням, яких хоче Cocoapods. Щоб побачити настройки збірки Cocoapods, перегляньте .xcconfig файли (файли) у Pods / Цільові файли підтримки / 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, перейдіть до Налаштування збірки для свого проекту, знайдіть відповідне налаштування та натисніть клавішу Видалити. Для цього буде використано налаштування від Cocoapods.

З іншого боку, якщо у вас є спеціальне налаштування, яке потрібно використовувати, додайте до цього параметра $ (успадкований).


У мене також була ця проблема, я зміг видалити -ObjC і це виправило цю проблему. Однак, коли я намагався створити проект, я отримую помилку, припускаючи, що цільову бібліотеку поділу неможливо знайти: "ld: бібліотека не знайдена для -lPods-MyProject". Ви бачили щось подібне?
Родерік Кемпбелл

3
Я знову стикаюся з цим. Я не впевнений, що $ (успадковано) означає. Де я його додаю?
huggie

@RodericCampbell Я виявив, що видалення -ObjC з проекту працює для мене добре, і я не бачу вашої помилки.
huggie

1
Хм, але мені потрібен прапор -ObjC для нього під час виконання, оскільки я отримав категорії.
huggie

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 ...
[!] .

Усі ці 3 помилки були б знищені додаванням $ (успадкованого) до

  1. Шляхи пошуку заголовків
  2. Інші прапорці Linker
  3. Препроцесорні макроси

у Проекті -> Ціль -> Налаштування збірки

І тепер команда запускалася б без помилок

pod install

Вищезазначене працювало для мене, коли просто змінити прапор на Other Linker Flagsбуло недостатньо.
JaredH

21

У проекті знайдіть Target -> Build Settings -> Other Linker Flags, виберіть Other Linker Flags, натисніть delete(клавіатура Mac) / Backspace(звичайна клавіатура), щоб відновити налаштування. Це працює для мене.

Приклад:

До цього введіть тут опис зображення

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


1
чи видаляємо налаштування, які вже знаходяться в інших прапорах Linker? чи ми зберігаємо їх, а також додаємо $ (успадковані) ??
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(ймовірно, це буде BOLD - Це означає, що це відмінено).
  4. Виберіть рядок (щоб він виділився синім кольором) та натисніть ⌘ + DELETE(Command + Backspace)

Рядок більше не слід жирним шрифтом, і якщо ви запускаєте pod installпопередження / помилки, вони повинні зникнути.


Наочний посібник

CLANG_CXX_LIBRARY Помилка / попередження з Cocoapods


12

Якщо Xcode скаржиться при посиланні, наприклад, Бібліотека не знайдена для -lPods, вона не виявляє неявних залежностей:

Перейдіть до продукту> Редагувати схему. Клацніть на збірку. Додайте статичну бібліотеку Pods


Я спробував так, як ви запропонували, але в ньому не відображаються нещодавно встановлені фреймворки за файлом pod, будь-які пропозиції щодо виправлення помилок прапорця посилання @Amit Saxena
Anilkumar iOS ReactNative

11

Для мене проблема була в моїх цільових тестах. Я вже мав $(inherited)прапор у своїй головній цілі програми.

Я додав його до прапорів інших Linker MyAppTests. Після цього, коли я побіг, pod installпопередження не було. введіть тут опис зображення


6

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

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

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

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

platform :iOS, '5.0'

6

Я додав $ (успадкований), але мій проект все ще не збирався. Для мене проблемою був прапор "Збірка лише для активної архітектури", я повинен був встановити його ТАК.


якщо проект збирається, чи можемо ми просто ігнорувати попередження?
isJulian00
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.