[xcode] target은`Pods / Pods.xcconfig에 정의 된`OTHER_LDFLAGS` 빌드 설정보다 우선합니다.

SpatialIite헤더 Proj.4하나 의 헤더 파일을 사용하는 Xcode 프로젝트에 통합 했습니다 . 둘 다 Xcode 프로젝트이며 정적 대상이 있습니다.

git 하위 모듈에서 Cocoapods로 마이그레이션하려고합니다. 정적 대상은 Cocoapod와 함께 사용하기 어려워 보이므로 프로젝트를 일반적인 방식으로 빌드하고 싶습니다. 에 대한 podspec을 만들었습니다 Proj.4. podfile을 작성한 후 SpatialLite경고 메시지가 나타납니다.

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

이 문제를 읽었 지만 경고의 의미와 문제를 해결하기 위해 무엇을 할 수 있는지에 대한 단서가 없습니다.

또한 문제는 SpatiaLite 프로젝트를 단독으로 열뿐만 아니라 작업 공간을 열 때 iOS 프로젝트라고 가정 할 때 Mac OSX 64를 대상으로합니다. 내 podfile은 “platform : ios”라고 말합니다.



답변

이것은 확실히 대부분의 시간에 작동합니다.

대상 빌드 설정으로 이동-> 기타 링커 플래그-> 두 번 클릭하십시오. $(inherited)새 줄에 추가하십시오 .

“… target이 GCC_PREPROCESSOR_DEFINITIONS 빌드 설정을 정의합니다 …”에 문제가있는 경우 대상 빌드 설정-> 전 처리기 매크로에 $ (상 속됨)을 추가해야합니다.


답변

빌드 설정과 Cocoapods가 원하는 기본 빌드 설정간에 충돌이 있습니다. Cocoapods 빌드 설정을 보려면 프로젝트의 포드 / 대상 지원 파일 / Pods-$ {PROJECTNAME} /에서 .xcconfig 파일을보십시오. 나를 위해이 파일에는 다음이 포함됩니다.

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

Cocoapods 설정에 만족하면 프로젝트의 빌드 설정으로 이동하여 적절한 설정을 찾고 Delete 키를 누르십시오. Cocoapods의 설정을 사용합니다.

반면, 사용해야하는 사용자 지정 설정이 있으면 해당 설정에 $ (상 속됨)을 추가하십시오.


답변

터미널에서 포드 명령에 대한이 3 가지 오류를 보았습니다.

pod install

[!] MY_APP [Debug / Release] 대상은 HEADER_SEARCH_PATHS를 재정의합니다 …
[!] MY_APP [Debug / Release] 대상은 OTHER_LDFLAGS를 재정의합니다 …
[!] MY_APP [Debug / Release] 대상은 GCC_PREPROCESSOR_DEFINITIONS를 재정의합니다. .

이 세 가지 오류는 모두 $ (상 속됨) 을 추가하면 사라집니다.

  1. 헤더 검색 경로
  2. 다른 링커 플래그
  3. 전 처리기 매크로

에서 프로젝트 -> 대상 -> 빌드 설정

이제 명령이 오류없이 실행됩니다.

pod install


답변

프로젝트에서 찾을 Target -> Build Settings -> Other Linker Flags선택 Other Linker Flags을 눌러 delete(맥 키보드) / Backspace설정을 복구 (일반 키보드). 그것은 나를 위해 작동합니다.

예:

전에
여기에 이미지 설명을 입력하십시오


여기에 이미지 설명을 입력하십시오


답변

을 실행할 때 비슷한 문제가 발생 pod install하여 다음과 같은 경고 / 오류가 발생했습니다 (관련 CLANG_CXX_LIBRARY) :

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.

수정

  1. 를 선택하면를 Project볼 수 있습니다 Build Settings.
  2. Target( AppName아래에서 Targets)를 선택하십시오
  3. 찾기 C++ Standard Library(아마도 BOLD에 있을 것입니다 -재정의되었음을 의미합니다).
  4. 선을 선택하고 (파란색으로 강조 표시됨) ⌘ + DELETE(Command + Backspace)를 누릅니다.

줄을 더 이상 굵게 표시해서는 안되며 pod install경고 / 오류 를 실행 하면 사라져야합니다.


시각 보조

CLANG_CXX_LIBRARY 오류 / Cocoapod 관련 경고


답변

링크 할 때 Xcode가 불평하면 (예 : -lPods에 대한 라이브러리를 찾을 수 없음) 암시 적 종속성을 감지하지 않습니다.

제품> 구성표 편집으로 이동 빌드를 클릭하십시오. 포드 정적 라이브러리 추가 정리 및 다시 빌드


답변

나에게 문제는 내 목표 테스트에 있었다. 이미 $(inherited)기본 앱 대상에 플래그 가있었습니다 .

MyAppTests Other Linker 플래그에 추가했습니다. 그 후 내가 pod install경고 메시지를 실행했을 때 사라졌습니다.
여기에 이미지 설명을 입력하십시오