CMake构建学习笔记4-libjpeg库的构建

5 篇文章 0 订阅

libjpeg是一个广泛使用的开源库,用于处理JPEG(Joint Photographic Experts Group)图像格式的编码、解码、压缩和解压缩功能,是许多图像处理软件和库的基础。

libjpeg本身的构建没什么特别的,不过值得说道的是libjpeg存在一个高性能分支叫做libjpeg-turbo,通过汇编代码使用SIMD(Single Instruction, Multiple Data)指令集(如 MMX、SSE2、AVX2 等),可以显著加快JPEG图像的压缩和解压缩速度。据说在同样的硬件环境下,libjpeg-turbo的速度通常是libjpeg的2到6倍。

libjpeg的一个经典版本是v6blibjpeg-turbo对这个版本保持了API兼容性,因此可以作为libjpeg的直接替代品,而无需对现有代码进行修改。libjpeg-turbo对于v7,v8只是做到了部分兼容,但是其实libjpeg目前已经发展到v9了。笔者个人认为libjpeg和libjpeg-turbo是C语言实现的,接口比较稳定,这个兼容性还是可以保证的。另外,jpeg的格式也固定很久了改动也不太大,估计也不上版本太高的功能,因此还是决定使用libjpeg-turbo。

构建libjpeg-turbo的关键指令如下所示:

# 配置CMake  
cmake .. -G "$Generator" -A x64 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="$InstallDir" -DENABLE_STATIC=off

# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo

# 安装阶段,指定构建类型和安装目标
cmake --build . --config RelWithDebInfo --target install

除了ENABLE_STATIC是libjpeg-turbo自定义的构建选项,其他指令和构建选项本系列其他几篇博文都介绍过。不过有一点需要提示一下,libjpeg-turbo编译用到了汇编语言,因此需要指定一个汇编语言编译器NASM,只要是安装在默认目录就能够自动识别:

CMake变量和项目配置

当然,不需要NASM也能构建成功,不过libjpeg-turbo就不能得到最佳的性能优化了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

charlee44

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值