Ошибка сборки xcode: не удалось найти путь к двоичному файлу clang, чтобы найти библиотеку Address Sanitizer

Когда в Xcode (версия 15.3) отключена опция Address Sanitizer, проект собирается успешно. Однако, как только я включаю эту опцию, сборка завершается с ошибкой: «Не удалось найти путь к двоичному файлу clang, чтобы найти библиотеку Address Sanitizer».

xcode как вариант

ошибка сборки xcode

Я нашел libclang_rt.asan_ios_dynamic.dylib в каталоге Xcode и добавил его в этапы сборки -> Библиотека ссылок с библиотеками. Однако я все еще получаю ту же ошибку. Но когда я создаю новый проект и включаю опцию Address Sanitizer, он собирается успешно.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
177
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта проблема была вызвана неправильными настройками макросов CC и CXX. Когда я проверил файл Pods-[TargetName]-debug.xcconfig, я обнаружил, что для CC установлено значение clang, а для CXX — clang++.

Откройте тернимал, введите xcodebuild -find clang и xcodebuild -find clang++, тогда я смогу получить реальный путь clang и clang++. Я вручную изменил файл Pods-[TargetName]-debug.xcconfig:
CC = /Applications/Xcode-15.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CXX = /Applications/Xcode-15.3.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++.
После этого ошибка сборки xcode исчезла.

Далее хочу узнать, почему появляются неправильные настройки CC=clang CXX=clang++. Посмотрев исходный код Cocoapods, я обнаружил, что CC и CXX не были жестко запрограммированы. После некоторых исследований я наконец обнаружил, что эта проблема может повториться, если в проекте будет ссылка на библиотеку модулей Snappy.
Подробности о Snappy Podspec

Окончательные решения (добавьте эти строки в свой подфайл):

pre_install do |installer|
  fix_cc_cxx_macro_path installer
end

def fix_cc_cxx_macro_path(installer)
  installer.pod_targets.each do |pod_target|
    pod_target.specs.each do |spec|
      next if spec.attributes_hash['xcconfig'].nil?
      if spec.attributes_hash.dig('xcconfig', 'CC')
        spec.attributes_hash['xcconfig']['CC'] = `xcodebuild -find clang`
      end
      if spec.attributes_hash.dig('xcconfig', 'CXX')
        spec.attributes_hash['xcconfig']['CXX'] = `xcodebuild -find clang++`
      end
    end
  end
end

Другие вопросы по теме