Xcode上でImplicit declaration of function 'notify_cancel' is invalid in C99 でハマった
Pureeをcocoapodsで導入しようとしてたら
Pureeが依存してるYapDatabaseというやつがCocoaLumberjackに依存してて、CocoaLumberjackのところでタイトルのエラーが出た。
Implicit declaration of function 'notify_cancel' is invalid in C99
notify_cancelメソッドをクリックすると、osのコードっぽいところ/usr/include/notify.hにいきつく。
Implicit declaration of function '' is invalid in C99
というやつでググるとコンパイラのフラグでどうのこうのとか、osのコードっぽいところまできたので、xcode7.3.1とかxcode8とかswiftのバージョンとかを疑ってしまって、CocoaLumberjackをビルド対象から外せないかとか、other_c_flagsとかで無視できるってissueとかにつられて、盛大にはまってしまった。
敵はここにいた・・
そもそもCocoaLumberjack単体でビルドできるのかとか試してたけどなんの問題もなくてどうしようかなーと考えてて、ふと、エラーが出る冒頭で、#include <notify.h>
としてるんだけど、そこをクリックすると、なんとFoxのSDKのNotify.hに飛んだ:joy:
解決策
Podfileに追記
+ # HEADER_SEARCH_PATHSからfoxSdkを削除する + def remove_fox_sdk_from_header_search_path(pod) + workDir = Dir.pwd + xcconfigFilename = "#{workDir}/Pods/Target\ Support\ Files/#{pod}/#{pod}.xcconfig" + xcconfig = File.read(xcconfigFilename) + newXcconfig = xcconfig.gsub('"${PODS_ROOT}/Headers/Public/foxSdk"', '') + File.open(xcconfigFilename, "w") { |file| file << newXcconfig } + end + + ['CocoaLumberjack', 'YapDatabase'].each do |proj| + remove_fox_sdk_from_header_search_path proj + end
cf: http://dev.classmethod.jp/smartphone/iphone/cocoapods-inherited/