CMakeでarのオプションを設定する方法
前回に続いてCMakeネタ。トラブルを持ち込んでくれるのは例によって?AIXマシンです。
いまどきプログラムのビルドは当然ながら64bitで、IBMコンパイラなら-q64オプションをつけてやるわけですが、できたオブジェクトファイルをarでstatic libraryにまとめる段で文句を言われました。
原因は単純で、arがデフォルトで32bit設定だから。64bitのをarchiveするには-X64オプションをつければOKなのですが、CMakeにはCMAKE_AR_FLAGSのようなarコマンドのオプション設定は用意されていません。なので、内部の値を直接書き換えてしまいます。CMakeのMLからChange archive creation flagsを参照。AIXの場合に書き換えるには
if(CMAKE_SYSTEM_NAME MATCHES "AIX") foreach(step CREATE APPEND FINISH) string(REPLACE "<CMAKE_AR>" "<CMAKE_AR> -X64" CMAKE_CXX_ARCHIVE_${step} "${CMAKE_CXX_ARCHIVE_${step}}") endforeach() endif()
としておきます。
ちょっと2009年と情報が古いですが、MLで前後にbug tracking systemに登録してissue番号教えてね、などというやりとりがあるわりには未だに対策されていないみたいなので載っけておきます。