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

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

Я пытаюсь перейти из подмодуля git в Cocoapods. Поскольку статические объекты, кажется, трудно использовать с Cocoapods, я просто хочу, чтобы проект был построен обычным способом. Я сделал podspec для Proj.4. После написания podfile для 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. Мой podfile говорит "platform: ios".

Ответ 1

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

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

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

Ответ 2

Существует конфликт между вашими настройками сборки и настройками сборки по умолчанию, которые хочет 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.

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

Ответ 3

Я видел эти 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 ошибки исчезнут, добавив $(унаследованный) в

  • Пути поиска заголовков
  • Другие флаги компоновщика
  • Макросы препроцессора

в Project → Target → Настройки сборки

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

pod install

Ответ 4

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

Пример:

Перед enter image description here

После enter image description here

Ответ 5

У меня была аналогичная проблема, когда я запускал 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.

Исправление

  • Выберите Project, чтобы вы могли видеть Build Settings.
  • Выберите Target (AppName в разделе Targets)
  • Найти C++ Standard Library (Вероятно, это будет BOLD - это означает, что он переопределен).
  • Выберите строку (поэтому она выделена синим цветом) и нажмите ⌘ + DELETE (Command + Backspace)

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


Визуальная помощь

CLANG_CXX_LIBRARY Error/Warning with Cocoapods

Ответ 6

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

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

Ответ 7

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

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

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

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

platform :iOS, '5.0'

Ответ 8

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

Я добавил его в MyAppTests Другие флаги компоновщика. После этого, когда я запустил pod install предупреждающее сообщение пропало. enter image description here

Ответ 9

Я добавил $(унаследованный), но мой проект все еще не компилировался. Для меня проблемой был флаг "Build for active Architecture only", мне пришлось установить его в YES.