libjpegをVC2017でビルドする

libjpeg(もともと:http://www.ijg.org/ 、新ページ: http://www.infai.org/jpeg/ )を VisualStudio2017でビルドした話。

 

この記事は 上記「libjpegをビルドする」(libjpegをVS2010でビルドした記事)を参考にした。なお、当時と異なる部分は太字で書いている。

 


 

libjpegは、JPEGエンコード、デコードを行うためのライブラリである。

 

libjpeg - Wikipedia

 

まず、infai(http://www.infai.org/jpeg/)からjpegsr9b.zipをダウンロード・展開する。

ここで、install.txtの終わり近く、1044行目に

Microsoft Windows, Microsoft Visual C++ 2010 Developer Studio (v10):

という項があり、VC2010でのコンパイル方法について説明されている

しかし、VC2012以降では win32.mak なるものが削除されたらしく(cf. https://support.microsoft.com/ja-jp/help/2791460)、説明通りに

NMAKE /f makefile.vc  setup-v10

を実行することはできない。

そこで、makefile.vcをテキストエディタで開き、158-172行目の

ren jconfig.vc jconfig.h
ren makejsln.v10 jpeg.sln
ren makeasln.v10 apps.sln
ren makejvcx.v10 jpeg.vcxproj
ren makejfil.v10 jpeg.vcxproj.filters
ren makecvcx.v10 cjpeg.vcxproj
ren makecfil.v10 cjpeg.vcxproj.filters
ren makedvcx.v10 djpeg.vcxproj
ren makedfil.v10 djpeg.vcxproj.filters
ren maketvcx.v10 jpegtran.vcxproj
ren maketfil.v10 jpegtran.vcxproj.filters
ren makervcx.v10 rdjpgcom.vcxproj
ren makerfil.v10 rdjpgcom.vcxproj.filters
ren makewvcx.v10 wrjpgcom.vcxproj
ren makewfil.v10 wrjpgcom.vcxproj.filters

を手動で実行する。実行するには、zipを展開したディレクトリでコマンドプロンプトを開き、この15行のren(rename)コマンドをコピペする。

(ここが、引用元ブログの以下の部分に相当する:

VS2008でビルドするので展開したファイルの中からmakexxxx.vc9となっているファイルを集める。

集めたファイルを次のようにリネームする。

makejsln.vc9 → libjpeg.sln  libjpeg本体のソリューションファイル
makejvcp.vc9 → jpeg.vcproj  libjpeg本体のプロジェクトファイル

makeasln.vc9 → jpegutl.sln  jpegファイルを操作するユーティリティプログラムのソリューションファイル
makecvcp.vc9 → cjpeg.vcproj  cjpegのプロジェクトファイル
makedvcp.vc9 → djpeg.vcproj  djpegのプロジェクトファイル
makervcp.vc9 → jpegtram.vcproj  jpegtramのプロジェクトファイル
maketvcp.vc9 → rdjpgcom.vcproj  rdjpgcomのプロジェクトファイル
makewvcp.vc9 → wrjpgcom.vcproj  wrjpgcomのプロジェクトファイル

次にjconfig.vcをjconfig.hとリネームする。

)

以上の作業が終了後、VS2017からlibjpeg.slnを読み込み、ビルドする。特にエラーは出ずにビルドは完了し、Releaseフォルダにjpeg.libができる。

次にapps.sln(旧jpegutl.sln)を読み込み、ビルドをすると、cjpeg、djpeg、jpegtram、rdjpgcom、wrjpgcomの5つのユーティリティプログラムが作成される。

 

以降は引用元ブログとほぼ同じであり、ReleaseビルドとDebugビルドのjpeg.lib、それにReleaseビルドの5つのユーティリティプログラムが得られる。

なお、一箇所、

C/C++:コード生成」→「簡易ビルドを行う」を「はい(/Gm)」

とあるが、ここは「最小リビルドを有効にする」に名称が変更されているので注意(「はい(/Gm)」はそのままでよい)。