O alvo… substitui a configuração de construção `OTHER_LDFLAGS` definida em` Pods / Pods.xcconfig

Eu incorporei o SpatialIite em um projeto Xcode que usa um arquivo de header do Proj.4 , apenas um header. Ambos são projetos Xcode e possuem alvos estáticos.

Estou tentando migrar do submodule git para Cocoapods. Como os alvos estáticos parecem ser difíceis de usar com Cocoapods, eu só quero que o projeto seja construído da maneira usual. Eu fiz o podspec para o Proj.4 . Depois de escrever o podfile para o SpatialLite, recebi os avisos:

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

Eu li este problema, mas eu sou muito ignorante sobre o que significam os avisos e o que posso fazer para corrigi-lo.

Além disso, quando eu abro o espaço de trabalho e abro o projeto SpatiaLite sozinho, ambos são direcionados para o Mac OSX 64, quando é suposto ser um projeto iOS. Meu podfile diz “plataforma: ios”.

Isso definitivamente funciona na maioria das vezes:

Vá para o seu alvo Configurações de construção -> Outros sinalizadores de link -> clique duas vezes. Adicione $(inherited) a uma nova linha.

Se você tiver problema com “… o destino substitui a configuração de compilation GCC_PREPROCESSOR_DEFINITIONS definida em …”, você deverá adicionar $ (herdado) às configurações de compilation de destino -> Macros de Pré-processador

Existe um conflito entre suas configurações de compilation e as configurações de compilation padrão que o Cocoapods deseja. Para ver as configurações de criação do Cocoapod, veja o arquivo em Pods / Pods.xcconfig em seu projeto. Para mim este arquivo contém:

 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 

Se você está feliz com as configurações Cocoapods, vá para Configurações de Construção para o seu projeto, encontre a configuração apropriada e pressione a tecla Delete. Isso usará a configuração de Cocoapods.

Por outro lado, se você tiver uma configuração personalizada que precise usar, adicione $ (herdada) a essa configuração.

Eu vi esses 3 erros para o comando pod no terminal

 pod install 

[!] O alvo MY_APP [Debug / Release] sobrescreve o HEADER_SEARCH_PATHS …
[!] O alvo MY_APP [Debug / Release] anula o OTHER_LDFLAGS …
[!] O destino MY_APP [Debug / Release] substitui o GCC_PREPROCESSOR_DEFINITIONS …

Todos esses 3 erros desapareceriam adicionando $ (herdado) a

  1. Caminhos de pesquisa de header
  2. Outras bandeiras do vinculador
  3. Macros de pré-processador

no projeto -> alvo -> configurações de compilation

E agora o comando seria executado sem erros

 pod install 

Em seu projeto, localize Target -> Build Settings -> Other Linker Flags , selecione Other Linker Flags , pressione delete (Teclado Mac) / Backspace (teclado normal) para recuperar a configuração. Funciona para mim.

Exemplo:

Antes insira a descrição da imagem aqui

Depois de insira a descrição da imagem aqui

Apenas tive um problema semelhante quando executei a pod install , vi os seguintes avisos / erros (relacionados a CLANG_CXX_LIBRARY ):

O erro / aviso 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. 

O conserto

  1. Selecione seu Project para que você possa ver as Build Settings .
  2. Selecione seu Target ( AppName sob Targets )
  3. Encontre C++ Standard Library (provavelmente estará em negrito – isso significa que ele é substituído).
  4. Selecione a linha (por isso, é destacado em azul) e pressione ⌘ + DELETE (Command + Backspace)

A linha não deve estar em negrito e se você executar o pod install os avisos / erros devem ter desaparecido.


Ajuda visual

CLANG_CXX_LIBRARY Erro / aviso com Cocoapods

Se o Xcode reclamar ao vincular, por exemplo, Biblioteca não encontrada para -lPods, ele não detectará as dependencies implícitas:

Vá para Produto> Editar Esquema Clique em Criar Incluir a biblioteca estática Pods Limpe e construa novamente

A primeira linha do link abaixo salvou meu dia:

Para adicionar valores às opções das configurações de criação do seu projeto, prefixar a lista de valores com $ (herdado).

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

Além disso, não se esqueça de inserir esta linha no início do seu arquivo pod:

 platform :iOS, '5.0' 

Para mim o problema foi com meus testes de alvos. Eu já tinha o sinalizador $(inherited) no meu destino de aplicativo principal.

Eu adicionei a MyAppTests outros sinalizadores de vinculador. Depois disso, quando executei o pod install a mensagem de aviso desapareceu. insira a descrição da imagem aqui

Eu adicionei $ (herdado), mas meu projeto ainda não estava compilando. Para mim problema foi flag “Construir apenas para arquitetura ativa”, eu tive que configurá-lo para SIM.