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".


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


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.


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

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


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


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


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



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.


se o projeto está sendo compilado, podemos simplesmente ignorar os avisos?
isJulian00
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.