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

237

Eu incorporei SpatialIiteem um projeto Xcode que usa um arquivo de cabeçalho Proj.4, apenas um cabeçalho. Ambos são projetos Xcode e têm destinos estáticos.

Estou tentando migrar do submódulo git para o Cocoapods. Como alvos estáticos parecem difíceis de usar com Cocoapods, eu só quero que o projeto seja construído da maneira usual. Eu fiz podspec para Proj.4. Depois de escrever podfile 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 esse problema, mas não sei o que significam os avisos e o que posso fazer para corrigi-lo.

Além disso, quando abro a área de trabalho e abro o projeto SpatiaLite sozinho, ambos são direcionados ao Mac OSX 64, quando supõe-se que seja um projeto iOS. Meu podfile diz "platform: ios".

huggie
fonte
2020 - para quem luta com esse problema irritante. É realmente causado apenas pelo (Surprise! :)) facebook. Como explicado AQUI, firebase.google.com/docs/auth/ios/firebaseui "Se preferir, você pode adicionar apenas o componente Auth e os provedores que deseja usar ...", depois de eliminar a opção do facebook, não há problema . : /
Fattie

Respostas:

543

Definitivamente, isso funciona na maioria das vezes:

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

Se você tiver problemas com "... target substitui a configuração de compilação GCC_PREPROCESSOR_DEFINITIONS definida em ...", adicione $ (herdado) às configurações de compilação de destino -> Macros do pré-processador

Ankish Jain
fonte
29
Eu estenderia essa resposta. Se você tiver problema com "... alvo substitui a GCC_PREPROCESSOR_DEFINITIONSconfiguração de construção definidos no ...", então você deve adicionar $ (herdado) para suas Configurações de destino de compilação -> Preprocessor Macros
Libor Zapletal
1
Eu suspeito que "... alvo substitui o INSERT_YOUR_MISSING_DEFINITION ...", então você deve adicionar $ (herdado) a ele. estranhamente, meu xcode estava mostrando $ (herdado) um pouco fraco, por padrão. editei e simplesmente redigitei a mesma coisa. erro desapareceu ..
joe
3
@joe Ainda não está trabalhando para mim. Tentei todas essas sugestões, mas quando executo a instalação do pod, os erros persistem. Fiz as alterações nos outros sinalizadores de vinculador e nas macros do pré-processador. Nos dois casos, nada aparece até você clicar duas vezes em cada uma das linhas em outros sinalizadores de vinculador e macros de pré-processador. Então você pode ver que $ (herdado) foi adicionado. Tentei excluir e ler. Tentei fechar e reabrir o xcode. Nada corrige as mensagens de erro quando digito a instalação do pod.
precisa saber é o seguinte
1
@msmq Já faz muito tempo, mas você se lembra da solução alternativa que tentou e fez funcionar? $(inherited)já está lá na linha superior, mas não funciona para mim: /
Kostas Dimakis 27/08/19
1
Eu adicionei ele ainda pod instalar lança o mesmo erro.
rohitwtbs
75

Há um conflito entre as configurações de compilação e as configurações padrão que o Cocoapods deseja. Para ver as configurações de compilação do Cocoapods, visualize o (s) arquivo (s) .xcconfig em Pods / Arquivos de suporte ao destino / Pods - $ {PROJECTNAME} / 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ê estiver satisfeito com as configurações do Cocoapods, vá para Build Settings do seu projeto, encontre a configuração apropriada e pressione a tecla Delete. Isso usará a configuração do Cocoapods.

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

phatmann
fonte
Eu também tive esse problema, consegui remover o -ObjC e corrigi-lo. No entanto, quando tentei criar o projeto, recebo um erro sugerindo que a biblioteca de pods específica do destino não pode ser encontrada: "ld: biblioteca não encontrada para -lPods-MyProject". Você viu algo parecido?
Roderic Campbell #
3
Estou com isso de novo. Não tenho certeza se $ (herdado) significa. Onde o adiciono?
huggie
@RodericCampbell Descobri que remover -ObjC do projeto funciona bem para mim e não vejo seu erro.
huggie
1
Hmm, mas eu preciso do sinalizador -ObjC para ele em tempo de execução, pois tenho categorias.
Huggie
3
OTHER_LDFLAGS = Outros sinalizadores vinculados, HEADER_SEARCH_PATHS = Caminhos de pesquisa de cabeçalho, GCC_PREPROCESSOR_DEFINITIONS = Macros de pré-processador. @kraftydevil, que configuração você está tentando excluir?
Phatmann
30

Eu vi esses 3 erros para o comando pod no terminal

pod install

[!] O destino MY_APP [Debug / Release] substitui o HEADER_SEARCH_PATHS ...
[!] O destino MY_APP [Debug / Release] substitui o OTHER_LDFLAGS ...
[!] O destino MY_APP [Debug / Release] substitui o GCC_PREPROCESSOR_DEFINITIONS .. .

Todos esses três erros desapareceriam adicionando $ (herdado) a

  1. Caminhos de pesquisa de cabeçalho
  2. Outros sinalizadores de vinculador
  3. Macros de pré-processador

em Projeto -> Destino -> Configurações de compilação

E agora o comando seria executado sem dar erros

pod install
zeeawan
fonte
O acima funcionou para mim, quando simplesmente mudar a bandeira para Other Linker Flagsnão era suficiente.
JaredH
21

No seu projeto, encontre 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

SamirChen
fonte
1
removemos as configurações já localizadas em outros sinalizadores de vinculador? ou nós os mantemos e também adicionamos $ (herdado) ??
isJulian00
20

Só tive um problema semelhante ao executar pod install, vi os seguintes avisos / erros (relacionados a CLANG_CXX_LIBRARY):

O erro / aviso do 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 Projectpara poder ver o Build Settings.
  2. Selecione seu Target( AppNameem Targets)
  3. Localizar C++ Standard Library(provavelmente será em Negrito - Isso significa que foi substituído).
  4. Selecione a linha (destacada em azul) e pressione ⌘ + DELETE(Command + Backspace)

A linha não deve mais ficar em negrito e se você executar pod installos avisos / erros deverão ter desaparecido.


Ajuda visual

CLANG_CXX_LIBRARY Erro / aviso com Cocoapods

Anil
fonte
12

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

Vá para Produto> Editar esquema Clique em Compilar Adicionar a biblioteca estática de Pods Limpar e compilar novamente

Amit Saxena
fonte
Tentei da maneira que você sugeriu, mas não está mostrando as estruturas instaladas recentes por arquivo pod, mais sugestões para corrigir erros de sinalizador de vinculador. @Amit Saxena
Anilkumar iOS ReactNative 3/17/17
11

Para mim, o problema estava nos meus testes de metas. Eu já tinha a $(inherited)bandeira no meu destino principal do aplicativo.

Eu o adicionei aos sinalizadores MyAppTests Other Linker. Depois disso, quando corri, pod installa mensagem de aviso sumira. insira a descrição da imagem aqui

Andreas Olsson
fonte
6

Adicionei $ (herdado), mas meu projeto ainda não estava sendo compilado. Para mim, o problema era sinalizador "Construir apenas para arquitetura ativa", tive que defini-lo como SIM.

sanjana
fonte
se o projeto está sendo compilado, podemos simplesmente ignorar os avisos?
isJulian00