CMake構(gòu)建學(xué)習(xí)筆記4-libjpeg庫的構(gòu)建
libjpeg是一個廣泛使用的開源庫,用于處理JPEG(Joint Photographic Experts Group)圖像格式的編碼、解碼、壓縮和解壓縮功能,是許多圖像處理軟件和庫的基礎(chǔ)。
libjpeg本身的構(gòu)建沒什么特別的,不過值得說道的是libjpeg存在一個高性能分支叫做libjpeg-turbo,通過匯編代碼使用SIMD(Single Instruction, Multiple Data)指令集(如 MMX、SSE2、AVX2 等),可以顯著加快JPEG圖像的壓縮和解壓縮速度。據(jù)說在同樣的硬件環(huán)境下,libjpeg-turbo的速度通常是libjpeg的2到6倍。
libjpeg的一個經(jīng)典版本是v6b,libjpeg-turbo對這個版本保持了API兼容性,因此可以作為libjpeg的直接替代品,而無需對現(xiàn)有代碼進(jìn)行修改。libjpeg-turbo對于v7,v8只是做到了部分兼容,但是其實libjpeg目前已經(jīng)發(fā)展到v9了。筆者個人認(rèn)為libjpeg和libjpeg-turbo是C語言實現(xiàn)的,接口比較穩(wěn)定,這個兼容性還是可以保證的。另外,jpeg的格式也固定很久了改動也不太大,估計也不上版本太高的功能,因此還是決定使用libjpeg-turbo。
構(gòu)建libjpeg-turbo的關(guān)鍵指令如下所示:
# 配置CMake
cmake .. -G "$Generator" -A x64 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="$InstallDir" -DENABLE_STATIC=off
# 構(gòu)建階段,指定構(gòu)建類型
cmake --build . --config RelWithDebInfo
# 安裝階段,指定構(gòu)建類型和安裝目標(biāo)
cmake --build . --config RelWithDebInfo --target install
除了ENABLE_STATIC是libjpeg-turbo自定義的構(gòu)建選項,其他指令和構(gòu)建選項本系列其他幾篇博文都介紹過。不過有一點需要提示一下,libjpeg-turbo編譯用到了匯編語言,因此需要指定一個匯編語言編譯器NASM,只要是安裝在默認(rèn)目錄就能夠自動識別:

當(dāng)然,不需要NASM也能構(gòu)建成功,不過libjpeg-turbo就不能得到最佳的性能優(yōu)化了。

浙公網(wǎng)安備 33010602011771號