El objetivo ... anula la configuración de compilación `OTHER_LDFLAGS` definida en` Pods / Pods.xcconfig


237

Lo he incorporado SpatialIitea un proyecto Xcode que usa un archivo de encabezado de Proj.4, solo un encabezado. Ambos son proyectos de Xcode y tienen objetivos estáticos.

Estoy tratando de migrar desde el submódulo git a Cocoapods. Dado que los objetivos estáticos parecen ser difíciles de usar con Cocoapods, solo quiero que el proyecto se construya de la manera habitual. Hice podspec para Proj.4. Después de escribir el podfile SpatialLite, recibí las advertencias:

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

Leí este problema, pero no tengo ni idea de lo que significan las advertencias y qué puedo hacer para solucionarlo.

Además, cuando abro el espacio de trabajo y abro el proyecto SpatiaLite solo, ambos están dirigidos a Mac OSX 64, cuando se supone que es un proyecto iOS. Mi podfile dice "plataforma: ios".


2020: para cualquiera que esté luchando con este molesto problema. Realmente solo es causado por (¡Sorpresa! :)) Facebook. Como se explica AQUÍ, firebase.google.com/docs/auth/ios/firebaseui "Si lo prefiere, puede agregar solo el componente Auth y los proveedores que desea usar ..." una vez que elimine la opción de Facebook, no hay problema . : /
Fattie

Respuestas:


543

Esto definitivamente funciona la mayor parte del tiempo:

Vaya a la Configuración de compilación de destino -> Otras banderas de enlace -> haga doble clic. Agregar $(inherited)a una nueva línea.

Si tiene un problema con "... target anula la configuración de compilación GCC_PREPROCESSOR_DEFINITIONS definida en ...", entonces debe agregar $ (heredado) a su configuración de compilación de destino -> Macros de preprocesador


29
Extendería esta respuesta. Si tiene problemas con "... el objetivo anula la GCC_PREPROCESSOR_DEFINITIONSconfiguración de compilación definida en ...", entonces debe agregar $ (heredado) a su Configuración de compilación de destino -> Macros de preprocesador
Libor Zapletal

1
sospecho que "... el objetivo anula el INSERT_YOUR_MISSING_DEFINITION ...", entonces debe agregarle $ (heredado). Curiosamente, mi xcode mostraba $ (heredado) un poco débil como por defecto. edité y simplemente reescribí lo mismo. error desapareció ..
Joe

3
@joe Todavía no funciona para mí. Intenté todas estas sugerencias, pero cuando vuelvo a ejecutar la instalación de pod, los errores persisten. Realicé los cambios tanto en los otros indicadores de enlazador como en las macros de preprocesador. En ambos casos, no se muestra nada hasta que haga doble clic en cada una de las líneas en otros indicadores de enlace y macros de preprocesador. Luego puede ver que $ (heredado) se ha agregado. Intenté borrar y leer. Intenté cerrar y volver a abrir xcode. Nada corrige los mensajes de error cuando escribo la instalación de pod.
JeffB6688

1
@msmq Ha pasado mucho tiempo, pero ¿recuerdas la solución que probaste y la hiciste funcionar? $(inherited)ya está allí en la línea superior, pero no funciona para mí: /
Kostas Dimakis

1
Lo agregué todavía la instalación de la vaina arroja el mismo error.
rohitwtbs

75

Existe un conflicto entre la configuración de compilación y la configuración de compilación predeterminada que Cocoapods desea. Para ver la configuración de compilación de Cocoapods, vea los archivos .xcconfig en Pods / Target Support Files / Pods - $ {PROJECTNAME} / en su proyecto. Para mí este archivo contiene:

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

Si está satisfecho con la configuración de Cocoapods, vaya a Configuración de compilación para su proyecto, encuentre la configuración adecuada y presione la tecla Eliminar. Esto usará la configuración de Cocoapods.

Por otro lado, si tiene una configuración personalizada que necesita usar, agregue $ (heredado) a esa configuración.


También tuve este problema, pude eliminar el -ObjC y eso solucionó este problema. Sin embargo, cuando intenté construir el proyecto, recibo un error que sugiere que no se puede encontrar la biblioteca de pod específica de destino: "ld: biblioteca no encontrada para -lPods-MyProject". ¿Viste algo similar?
Roderic Campbell

3
Me encuentro con esto de nuevo. No estoy seguro de que $ (heredado) significa. ¿Dónde lo agrego?
Huggie

@RodericCampbell He descubierto que eliminar -ObjC del proyecto funciona bien para mí y no veo su error.
Huggie

1
Hmm, pero necesito el indicador -ObjC para él en tiempo de ejecución ya que obtuve categorías.
Huggie

3
OTHER_LDFLAGS = Otros indicadores vinculados, HEADER_SEARCH_PATHS = Rutas de búsqueda de encabezado, GCC_PREPROCESSOR_DEFINITIONS = Macros de preprocesador. @kraftydevil, ¿qué configuración estás tratando de eliminar?
phatmann

30

He visto estos 3 errores para el comando pod en la terminal

pod install

[!] El objetivo MY_APP [Debug / Release] anula HEADER_SEARCH_PATHS ...
[!] El objetivo MY_APP [Debug / Release] anula el OTHER_LDFLAGS ...
[!] El objetivo MY_APP [Debug / Release] anula el GCC_PREPROCESSOR_DEFINITIONS .. .

Todos estos 3 errores desaparecerían agregando $ (heredado) a

  1. Rutas de búsqueda de encabezado
  2. Otras banderas de enlazador
  3. Macros de preprocesador

en Proyecto -> Destino -> Configuración de compilación

Y ahora el comando se ejecutaría sin dar ningún error

pod install

Lo anterior funcionó para mí, cuando simplemente cambiar la bandera Other Linker Flagsno era suficiente.
JaredH

21

En su proyecto, busque Target -> Build Settings -> Other Linker Flags, seleccione Other Linker Flags, presione delete(Teclado Mac) / Backspace(Teclado normal) para recuperar la configuración. Esto funciona para mi.

Ejemplo:

antes de ingrese la descripción de la imagen aquí

Después ingrese la descripción de la imagen aquí


1
¿Eliminamos la configuración que ya se encuentra en Otras banderas de vinculador? o los guardamos y también agregamos $ (heredado)?
isJulian00

20

Solo tuve un problema similar cuando corrí pod install, vi las siguientes advertencias / errores (relacionados con CLANG_CXX_LIBRARY):

El Error / Advertencia de 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.

La solución

  1. Seleccione su Projectpara que pueda ver el Build Settings.
  2. Seleccione su Target( AppNamedebajo Targets)
  3. Buscar C++ Standard Library(probablemente estará en negrita ; esto significa que se anula).
  4. Seleccione la línea (para que quede resaltada en azul) y presione ⌘ + DELETE(Comando + Retroceso)

La línea ya no debería estar en negrita y si ejecuta pod installlas advertencias / errores debería haber desaparecido.


Ayuda visual

CLANG_CXX_LIBRARY Error / Advertencia con Cocoapods


12

Si Xcode se queja al vincular, por ejemplo, Biblioteca no encontrada para -lPods, no detecta las dependencias implícitas:

Vaya a Producto> Editar esquema Haga clic en Construir Agregue la biblioteca estática Pods Limpie y vuelva a compilar


Intenté la forma en que sugirió, pero no muestra los marcos instalados recientemente por archivo pod, más sugerencias para corregir los errores de la bandera del vinculador. @Amit Saxena
Anilkumar iOS ReactNative

11

Para mí, el problema era con mis pruebas de objetivos. Ya tenía la $(inherited)bandera en el objetivo principal de mi aplicación.

Lo agregué a MyAppTests Otras banderas de Linker. Después de eso, cuando corrí, pod installel mensaje de advertencia desapareció. ingrese la descripción de la imagen aquí



6

Agregué $ (heredado) pero mi proyecto aún no se estaba compilando. Para mí, el problema era la marca "Construir solo para arquitectura activa", tuve que establecerlo en SÍ.


Si el proyecto se está compilando, ¿podemos ignorar las advertencias?
isJulian00
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.