#ios #xcode #react-native #cocoapods #react-native-hermes
Вопрос:
Я хочу включить Hermes для своего проекта iOS react native, но у меня следующая ошибка:
In file included from ../ios/Pods/RCT-Folly/folly/Singleton.cpp:35: ../ios/Pods/RCT-Folly/folly/portability/FmtCompile.h:19:10: fatal error: 'fmt/compile.h' file not found #include lt;fmt/compile.hgt; ^~~~~~~~~~~~~~~
Моя конфигурация:
System: OS: macOS 11.6.1 Binaries: Node: 12.22.7 - /usr/local/bin/node npm: 6.14.15 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman Managers: CocoaPods: 1.10.1 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4 npmPackages: @react-native-community/cli: Not Found react: 17.0.2 =gt; 17.0.2 react-native: ^0.66.3 =gt; 0.66.3
Мой Подфайл:
platform :ios, '12.0' require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' use_frameworks! workspace 'MyWorkspace' # Default spec repo source 'https://github.com/CocoaPods/Specs.git' ... target 'MyTarget' do project 'MyProject' config = use_native_modules! use_react_native!( :path =gt; config[:reactNativePath], # to enable hermes on iOS, change `false` to `true` and then install pods :hermes_enabled =gt; true ) ... end
После некоторого расследования я обнаружил, что динамическое связывание ( use_frameworks!
) вызывает эту проблему, и если я статически связываю модули, все работает нормально. Но я должен использовать фреймворки для своего проекта, так как же решить эту проблему?
Ответ №1:
Просто задайте пути поиска по заголовкам к fmt
источникам непосредственно для RCT-Folly
целевого post_install
входа, чтобы решить эту проблему:
Подфайл:
... post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'RCT-Folly' target.build_configurations.each do |config| config.build_settings['HEADER_SEARCH_PATHS'] = "$(inherited) ${PODS_ROOT}/fmt/include" end end end end