mozjpegをWindowsでビルドする
mozjpegというmozilla製のjpegを圧縮できるソフトウェア(というよりライブラリ寄り)があります。
これをWindowsでビルドしてexeを作りたいと思ったのですが、分かりやすい解説が見当たらなかったので自力でどうにかしました、その記録。
スポンサーリンク
mozjpegをWindowsで実行したい
mozjpegをWindows使いたかったんです、ただ、GUIソフトとかは自動化しづらいのでノーサンキューですし……つまり単なるCUIのexeが欲しい!!
というわけでmozjpegのGitHubを見てみたのですが、実行用のバイナリは用意されておらず、単なるソースコードのtarballが置いてあるだけです。
どうやら自分でビルドして使えスタイルの模様、ビルド済みバイナリを配布しているサイトもありますが、出来れば自分でビルドした確実に安全なバイナリを使いたい……
つまり自分でビルドする必要がある、仕方ない、やってやるよ!
必要な物
今回はVisualStudio(CUI)を利用してビルドします、MinGWとかCygwinでのやり方は知らぬ。(わざわざMinGW使うくらいの人なら自力でどうにか出来るよね?)
作業には以下の3つが必要です。(カッコ内は自分が使用したバージョン、おそらくその時点での最新版を利用したので良い)
- VisualStudio(2017 Community)
- CMake(3.9.1)
- NASM(2.13.01)かYASM(1.3.0)
このうちVisualStudioはインストールが必要です。(というかインストールしないと使えない)
CMakeとNASMはPATHが通っていれば良いのでzipでダウンロードしてきて適当な場所に配置したのでOKです。
(流石に「PATHを通す」の意味が分からない奴はいないと思いたい)
YASMを使う場合はnasm.exeにリネームしてPATHを通す必要があります。
(ビルド時に使用するコマンドがnasmなので、そうしないとNASMが見つからないと言われてコケる)
mozjpeg自体はreleaseページから使いたいバージョンのtar.gzを落としてきて展開します。(今回はv3.2を使用)
ビルドする
ビルド自体はコマンドで行うのですが、これはcmd.exeでもなく、PowerShellでもありません。
VisualStudioに付属している「Native Tools Command Prompt(vcvars32.batかvcvars64.bat)」を使います。
おそらくスタートメニューのVisualStudioフォルダの中にあるかと思います。
mozjpegのビルド
まずは成果物を入れるディレクトリを掘ります、適当にbuildとでもしましょうか。
mkdir build
cd build
CMakeします。
cmake.exe -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release <mozjpegのパス>
cmakeが出来たらnmakeを
nmake
これでビルドが行われます。
成果物の在り処
成果物はビルドした時のディレクトリにあります、名前に「-static」が付いてる奴がそれです。
(sharedlibの中にあるstaticが付いてない奴は実行にdllを必要とするので可搬性が悪い、特に理由がなければstatic版で良し)
よく使うのはjpegtranとcjpegで、jpegtranが最適化(画質そのままでメタデータなどを取り除く)、cjpegがlossy(画質を落とす代わりに容量をグッと減らす)です。
Webで使う場合はcjpegで良いと思います、使い方はググってね(この記事の主題から逸れるので)