1年以上前に非 CMake プロジェクトからなんとか CMake にできないかなーと思って compile_commands.json を仲介させる方法をやろうとしたけど、そもそもうまく出力できなかった理由が今日わかったんで備忘録!
原因は ccache
そのプロジェクトは ccache を利用しており、CC/CXX に ccache_wrapper.sh みたいなのを設定していました。最近 infer を試してて xcodebuild capture じゃうまくできなかったので、compile_commands.json でやろうとしたら1年ぶりに同じ罠にハマったのですが、今度は乗り越えた!圧倒的成長!!
xcpretty の parser.rb を見れば一目瞭然でした
https://github.com/xcpretty/xcpretty/blob/master/lib/xcpretty/parser.rb#L63
コンパイラー検出用の正規表現的に clang で終わるような CC じゃないと認識しれくれないかったのです。
ccache_wrapper.sh じゃなくて ccach_wrapper_clang だったらセーフだった・・
対応方法
CC/CXX はプロジェクトで設定されているので、xcconfig を食わせて CC/CXX を上書きするようにしました。
cxx.xcconfig
CC = clang CXX = clang++
export XCODE_XCCONFIG_FILE=/path/to/dir/cxx.xcconfig xcodebuild -scheme XXX -project XXX.xcodeproj -configuration Debug -dry-run build | tee ./build.log | xcpretty --report json-compilation-database --output ./compile_commands.json
ちょーすっきりした
0 件のコメント:
コメントを投稿