【macOS Mojave】macOS MojaveにアプデしたらCのヘッダーファイルが読み込まれなくなった件

macOSアプデしたら、なぜかCのコードでエラーが大量発生した

表題の通りです.macOSをMojaveにアプデしたら,今まで動いていたCのコードが全く動かなくなりました. 最初は自分が使っているIDE,「CLion」がOSのアプデにより何かおかしくなったのかな?と思ってCLionのアプデをしたりしましたが,全く変わりませんでした.

原因は?

やはり新OSリリース直後なので,諸々の対応が追いついてないのでは?という意見がありました. [MacOS Mojave]pyenvでpythonのインストールがzlibエラーで失敗した時の対応 - Qiita
直接的な原因としては,デフォルト設定でCのヘッダーファイルが/usr/includeに置かれないことにあるようです.
しかし,そんなこと今までなかったぞ...と思っていると本質的な原因がわかりました.
そもそも,macではCやC++コンパイラXCode由来のようで,OSアプデをした後にXCodeもアプデをしたのですが,そのアプデ内容に 「Mojave用のmacOS SDK headerがデフォルトで入っていないのが原因」みたいです.

対処法は?

問題はここからなのですが,様々な記事で指摘されている通り,対処法はそのSDKファイルを手に入れることなのですが,なぜかみなさん既にPCに入っていて

 /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

にあるとのこと.自分も探してみたのですが,

$ cd /Library/Developer/CommandLineTools/Packages/
> cd: no such file or directory:

はい,ない.

ということで,まずAppleデベロッパーアカウントを使って目的のSDKファイルを手に入れます.
まずはこのAppleのサイト( https://developer.apple.com/download/more/ )に入ってください.僕の場合はアカウントはいつの間にか持ってました. ログイン後,以下のような画面になります.そこでCommand Line Tools (macOS 10.14) for Xcode 10.1をダウンロードしてください.

f:id:kane-please:20181107000159p:plain
Apple Developrs

これを入れることにより,先ほどのディレクトリにSDKファイルが生まれます.あとは

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

で,基本的にCのコードは全て動くようになります.

CLionの再設定(蛇足)

上の手順に従えば,基本的にCのコードは動くようになるはずです. 自分はIDEでCLionを使っているのですが,エディタ上では赤いままだったので,それを直すために以下のことをしました.

  • Tools | CMake | Reset Cache and Reload Project

キャッシュ決して再読み込みすれば,勝手に直ってくれました.CLion最高!

最後に

macOS MojaveではこのSDKファイルの設定がないせいで,PythonRailsにも被害が及んでいるようです.さらに友人の話だとgitも動かなくなったという話(また入れればいいだけだけど)も聞きましたので,皆様もOSアプデは注意して,しっかりバックアップを取ってから行いましょう!

参考

qiita.com

qiita.com

Rails: macOSをMojaveにアップグレード後`bundle install`がエラーになった場合の対応方法

intellij-support.jetbrains.com