現象
StaticLibraryを配布したところ、利用者から下記の様なワーニングが多発したと連絡を受けた
warning: /var/folders/ht/bwnbnkj15712kftlggh_mrd039gknf/C/org.llvm.clang.hoge/ModuleCache/3OXN4L3TBS3XZ/Darwin-MI6WZSG1PNOM.pcm: No object file for requested architecture
while processing /Users/fuga/work/foo/h/wwwwww.framework/WwwWwww(WwwwWwww.o):
誤った解決方法
StaticLibraryの利用者側で、
「Debug Information Format」の指定を「DWARF with dSYM」から「DWARF」に変更する
僕は下記のような対応は解決ではないと思う
http://iphone-app-developer.seesaa.net/article/426858945.html
この設定を行った場合、ワーニングは表示されなくなるが、その代わりにdSYMファイルが作成されなくなる。
dSYMファイル
このdSYMファイルはデバックシンボル群を保持している。用途としてはクラッシュログが本来メモリダンプのみのためアドレスしか記載がないところ、dSYMファイルが存在していればアドレスからシンボルが確認でき、人間が意味の分かる内容になる。
よく見受けられるのはゲーム系開発などビルドに時間がかかりすぎる場合は、Debug時のみ「DWARF」を指定するなど。
とにもかくにも、「DWARF」にすればワーニングが表示されなくなるだけで、解決は何もしていない。
- cf. Xcode7.1.1(Xcode7.1時に意識していない)時のデフォルト値
「Debug Information Format」がDebug時は「DWARF」、Release時は「DWARF with dSYM」ぽい
正しい解決方法
StaticLibraryの作成者側のXcodeの設定で、下記を実施する。
Enable Modules (C and Objective-C) (CLANG_ENABLE_MODULES) = NO
Enable Modules (C and Objective-C)がYESだと?
StaticLibrary作成時に下記フォルダへcacheを生成していた。
/var/folders/ht/bwnbnkj15712kftlggh_mrd039gknf/C/org.llvm.clang.hoge/ModuleCache/
おそらく、StaticLibraryを配布した利用者側ではcacheを参照するようになっていたため、
作成者側ではワーニングが出ずに、利用者側ではワーニングが出現していたのだと思う。
最後に
StaticLibraryの利用者側のXcodeの設定で、下記を実施すると、
Enable Modules (C and Objective-C) (CLANG_ENABLE_MODULES) = NO
もれなくエラーが出現すると思われる。
たぶん・・・。
そもそも、この辺てXcode6以前の時て、どうだったんだろか。意識してなかった。