mike-neckのブログ

Java or Groovy or Swift or Golang

Swift で Foundation を import するとヘッダーまわりでエラーが発生する場合の対処

f:id:mike_neck:20180609045321p:plain

以前書いたエントリー

mike-neck.hatenadiary.com

の対処法が間違えていて、ビルドもなにもできなくなった上に、 REPL で import Foundation をやっても同じエラーが出てしまう割と深刻な状況の対処法。

(巷にある ~/Library/Developer/Xcode を消すやつが何の役にも立たなくて、絶望しかなかった)

もしかしたら、 swift を書けるエンジニアは知ってて当たり前の方法なのかもしれんけど…

参考にしたのはこちら。

stackoverflow.com

原因は brew で以前にインストールしたヘッダーファイルが何らかの原因によってインクルードされた上、brew で入れたアプリケーションからはリンクされていないような状態にあるときに、このエラーは発生する模様。

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
  /usr/local/include/6.1.0/backward/auto_ptr.h
  /usr/local/include/6.1.0/backward/backward_warning.h
 〜こんな感じで2400個くらいヘッダーファイルがリストされている〜
  /usr/local/include/zconf.h
  /usr/local/include/zlib.h

で、対処はこれらのヘッダーファイルを消す。

$ brew doctor 2>&1 | grep "\.h$" | xargs sudo rm

おわり