update manually cocoapod actualizar xcode cocoapods

xcode - manually - pod init



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

He incorporado SpatialIite en un proyecto de 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 de Git submodule 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 podfile para SpatialLite obtuve 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 solo el proyecto SpatiaLite, ambos están dirigidos a Mac OSX 64, cuando se supone que es un proyecto iOS. Mi podfile dice "plataforma: ios".


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


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

Ejemplo:

antes de

Después


Esto definitivamente funciona la mayor parte del tiempo:

Vaya a su Configuración de compilación de destino -> Otras banderas del enlazador -> haga doble clic. Agrega $(inherited) a una nueva línea.

Si tiene un problema con "... target reemplaza 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


Existe un conflicto entre la configuración de compilación y la configuración de compilación predeterminada que desea Cocoapods. Para ver la configuración de compilación de Cocoapods, vea el archivo en Pods / Pods.xcconfig en su proyecto. Para mi 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 Crear configuración para su proyecto, encuentre la configuración adecuada y presione la tecla Eliminar. Esto utilizará la configuración de Cocoapods.

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


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

pod install

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

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

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

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

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

pod install



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

Lo agregué a las banderas de MyAppTests Other Linker. Después de eso, cuando ejecuté la pod install del pod install el mensaje de advertencia se fue


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

Vaya a Producto> Editar esquema Haga clic en Crear Agregar a la biblioteca estática Pods Limpiar y compilar nuevamente


Solo tuve un problema similar cuando ejecuté la 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 Project para que pueda ver la Build Settings .
  2. Seleccione su Target (nombre de aplicación bajo Targets )
  3. Buscar la C++ Standard Library (probablemente estará en NEGRA - Esto significa que está anulada).
  4. Seleccione la línea (Se resaltará en azul) y presione ⌘ + BORRAR (Comando + Retroceso)

La línea ya no debe estar en negrita y, si ejecuta el pod install las advertencias / errores que deberían haber desaparecido.

Ayuda visual