CocoaPod — ошибки линтинга Podspec при использовании C++ в файлах заголовков

У меня проблема, когда файл заголовков linting включает C++.

pod lib lint MyLibrary.podspec

Вот мой заголовочный файл:

#include <memory>
#include <string>
#include <vector>
#include <stdexcept>

Я получаю следующую ошибку PathToMyHeader: 31: 10: фатальная ошибка: файл «памяти» не найден

Я думаю, что «строка», «вектор», «stdexpept» будут одинаковыми ошибками

Вот мой подспек

  s.source_files = 'Pod/Classes/Include/*', 'Pod/Frameworks/MyFramework.framework/Headers/*.h'

  s.resource_bundles = {
      'Pod' => ['Pod/Resources/*']
  }

  s.public_header_files = 'Pod/Frameworks/MyFramework.framework/Headers/*.h'
  s.vendored_frameworks = 'Pod/Frameworks/MyFramework.framework'
  s.frameworks = 'Accelerate', 'Security', 'QuartzCore', 'OpenGLES', 'CoreBluetooth', 'CoreGraphics', 'CoreFoundation', 'CoreText', 'MyFramework'
  s.vendored_libraries = 'Pod/Libraries/*.a'
  s.libraries = 'z', 'stdc++', 'MyLib'
  s.pod_target_xcconfig = {
      'CLANG_CXX_LANGUAGE_STANDARD' => 'compiler-default',
      'CLANG_CXX_LIBRARY' => 'libc++',
      'OTHER_LDFLAGS' => '$(inherited) -ObjC'
  }

Ошибки после линтинга

While building module 'MyPod' imported from /var/folders/mg/0ckz5wr564sf3ctkr_lbtt440000gn/T/CocoaPods-Lint-20180913-4902-prtn4r-MyPod/App/main.m:3:
    In file included from <module-includes>:1:
    In file included from /Users/xxx/Library/Developer/Xcode/DerivedData/App-gtcyhyyxmkxxbbfdxoqxlqrpwaaq/Build/Products/Release-iphonesimulator/MyPod/MyPod.framework/Headers/MyPod-umbrella.h:22:
    /Users/xxx/Library/Developer/Xcode/DerivedData/App-gtcyhyyxmkxxbbfdxoqxlqrpwaaq/Build/Products/Release-iphonesimulator/MyPod/MyPod.framework/Headers/Header-cpp.h:30:10: fatal error: 'memory' file not found
    #include <memory>
             ^~~~~~~~
    94 warnings and 1 error generated.
    /var/folders/mg/0ckz5wr564sf3ctkr_lbtt440000gn/T/CocoaPods-Lint-20180913-4902-prtn4r-MyPod/App/main.m:3:9: fatal error: could not build module 'MyPod'
    @import MyPod;
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    94 warnings and 2 errors generated.

    ** BUILD FAILED **

Обновление от 13.09.2018 @Paul Beusterien, большое спасибо за помощь, теперь все работает. стручок с использованием:

pod lib lint MyPodSpec.podspec --skip-import-validation

но после того, как я вызываю установку модуля для своего проекта на рабочем месте, кажется, что он только что прошел модуль, но показывает те же ошибки, когда я запускаю свой проект Ошибка


person Wildson Lee    schedule 12.09.2018    source источник
comment
Скопируйте/вставьте содержимое podspec и ошибки, а не скриншоты.   -  person Larme    schedule 12.09.2018
comment
@Larme Привет, спасибо! Я обновил свои проблемы.   -  person Wildson Lee    schedule 13.09.2018
comment
Вам может потребоваться скопировать/добавить libstdc++.6.0.9.tbd в проект (stackoverflow.com/questions/50694822/)   -  person Ryan    schedule 04.11.2018
comment
@WildsonLee, какое было решение? Борюсь с той же проблемой сейчас   -  person Nik    schedule 04.11.2020


Ответы (2)


Это известная проблема CocoaPods, заключающаяся в том, что не удалось линтинговать заголовки C++.

Обходной путь - вариант --skip-import-validation

person Paul Beusterien    schedule 12.09.2018
comment
большое спасибо ! Но я запускаю свой проект в xcode с той же ошибкой, возможно, опция -skip-import-validation просто передает модуль проверки - person Wildson Lee; 13.09.2018

Добавьте файлы заголовков С++ в группу частных заголовков.

С podspec вы можете добавить вот так

spec.private_header_files = 'Headers/Private/*.h'

Внутри приватных заголовочных файлов вы можете безопасно включать заголовки stdlib.

person riguang zheng    schedule 26.11.2020