ccacheをarmccに対応させてみる 02

コードみたりしてわかったこと。

  • ccacheがうまく動かなかったら、あきらめて、普通にコンパイルする
  • ソースを複数指定してまとめてコンパイル方式には対応していない
  • プリプロセスかけたコードを一旦*.iとか*.iiとかいう名前にして、homeの.ccacheフォルダにおく
  • プリプロセスかけたコードをarmccに渡して、コンパイルする
  • armcc独自の引数付きコンパイルオプションに対応させなければいけない。
    • progress_args()関数の「const char *opts[] =」という配列に「"-via","-fpu","-cpu"」を追加だ
  • ccacheがarmccに渡すフォルダ階層が/home/等unixな感じなので、c:\cygwin\home\...といった感じに書き直さないといけない
  • ccacheは /home/...みたいに フォルダ階層の区切りを'/'にしているが、armccが'/'を区切りとしてみなさないので、'\'に置換して渡してあげないと、エラーになる
  • armccは拡張子が .i/.ii みたいな C/CPP以外のものは受け付けない。なのでプリプロセス後のファイルの拡張子も.CPP等にしておかないとコンパイル失敗する
  • なぜだか、armccはソースを直接コンパイルかけたのと、プリプロセス後のコードをコンパイルするのでは、できたオブジェクトのサイズが違う。
    • export CCACHE_CPP2="CCACHE_CPP2" とすれば、Cソースをコンパイルしてくれるので、これでOK。
    • でもなんでだろ?armccに渡すオプション指定がおかしいのかな?
    • define定義のところで、直接コンパイルではエラーがでなかったのに、プリプロセス後のコードをつかったら、エラーが出たところがあった
    • けっきょくエラーのでるところのdefine定義の前後にスペースを入れたら、無事コンパイル通った。
    • 直コンパイル時と プリプロセスだけのときでは、処理が違うのかしら・・・?
  • ログの設定してからccache走らせないと、なんでエラーになったかよくわからない
export CCACHE_LOGFILE="/var/log/ccache.log"