luarocks install できないとき
Visual Studio の cl.exe が使える環境で benchmarker をインストールしようとしたら失敗した。 ソースを見てみるとコンパイル時に WIN32 が定義されていると windows.h と stdint.h をインクルードし、そうでなければ sys/time.h と sys/resource.h をインクルードするようになっていた。
だったら WIN32 を渡してやればいいと思い、まず rock ファイルをダウンロードして展開。
code:cmd
luarocks download cputime
luarocks unpack .\cputime-0.2.0-0.src.rock
cd cputime-0.2.0-0\lua-cputime
そして rockspec ファイルの以下の箇所を書き換える。
code:(変更前)cputime-0.2.0.rockspec
build = {
type = "builtin",
modules = {
cputime = "src/lua-cputime.c"
}
}
code:(変更後)cputime-0.2.0.rockspec
build = {
type = "builtin",
modules = {
cputime = {
sources = { "src/lua-cputime.c" },
defines = { "WIN32" },
}
}
}
最後に luarocks make すれば cputime はインストール完了。
もう一つの依存モジュールも同様に対応して無事 benchmarker がインストールできた。
なお、MinGW 環境だと普通に rockspec の書き換えなしでインストールできた。