专栏首页10km的专栏libjpeg-turbo 命令行编译脚本(MinGW/MSVC/linux)

libjpeg-turbo 命令行编译脚本(MinGW/MSVC/linux)

版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/80095817

libjpeg-turbo用CMAKE命令行编译还是很方便的 编译libjpeg-turbo需要NASM支持,编译前请下载并正确安装。

mkdir build
cd build
# 生成Makefile
cmake -G "MinGW Makefiles" \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DCMAKE_DEBUG_POSTFIX=_d \
    -DCMAKE_C_FLAGS=-m64 \
    -DCMAKE_INSTALL_PREFIX=%安装路径% \
    ..
# 编译并安装到指定的路径
make install -j8

编译libjpeg-turbo 主要的一些可选项:

ENABLE_STATIC=FALSE 不编译静态库(默认为TRUE) ENABLE_SHARED=FALSE 不编译动态库(默认为TRUE) WITH_SIMD=FALSE 不支持SIMD指令(默认为TRUE),如果在虚拟机下编译,此选项要置为OFF

MinGW

完整脚本(build_jpeg_turbo_gcc.bat),该脚本自动判断当前gcc编译器的能力编译32/64位版本,执行脚本时如果带 DEBUG参数则编译DEBUG版,如:build_jpeg_turbo_gcc DEBUG,否则默认编译RELEASE版:

@rem 根据%%1参数 编译DEBUG|RELEASE版本,默认RELEASE
@echo off 
echo build jpeg-turbo by MinGW
rem 判断是否安装了MinGW编译器,如果没有则报错退出
where gcc
if errorlevel 1 (
    echo MinGW/gcc NOT FOUND.
    exit -1
)
echo MinGW/gcc found.
rem 判断是否安装了cmake,如果没有则报错退出
where cmake
if errorlevel 1 (
    echo cmake NOT FOUND.
    echo download from http://cmake.org/ ,extract to disk 
    echo add installation path to environment variable PATH
    pause
    exit -1
)
echo cmake found.
rem 判断是否安装了nasm,如果没有则报错退出
where nasm
if errorlevel 1 (
    echo nasm NOT FOUND.
    echo download from https://www.nasm.us/ ,extract to disk 
    echo add installation path to environment variable PATH, version above 2.13.03 required.
    pause
    exit -1
)
echo nasm found.
set sh_folder=%~dp0
rem 定义编译的版本类型(DEBUG|RELEASE)
set build_type=RELEASE
rem 如果输入参数1为"DEBUG"(不区分大小写)则编译DEBUG版本
if /I "%1" == "DEBUG" ( set build_type=DEBUG) 
echo build_type=%build_type%

set source_folder=libjpeg-turbo-1.5.90
if not exist %source_folder% (
    echo not found source folder: %source_folder%,please unzip %source_folder%.zip in current folder
    pause
    exit -1
    )
pushd %sh_folder%\%source_folder%
rem 判断是否能编译64位程序
gcc --version |findstr "sjlj seh"
if errorlevel 1 (
    echo unsupported x86_64 build
    )else call:gcc_x86_64

rem 判断是否能编译32位程序
gcc --version |findstr "sjlj dwarf"
if errorlevel 1 (
    echo unsupported x86 build  
    )else call:gcc_x86

goto :end
:gcc_x86
echo build x86 use MinGW 
if exist build_gcc_x86 rmdir build_gcc_x86 /s/q
mkdir build_gcc_x86
pushd build_gcc_x86
rem gcc SJLJ or DWARF distribution required

cmake -G "MinGW Makefiles" ^
    -DCMAKE_BUILD_TYPE=%build_type% ^
    -DCMAKE_DEBUG_POSTFIX=_d ^
    -DCMAKE_C_FLAGS=-m32 ^
    -DCMAKE_INSTALL_PREFIX=%sh_folder%/libjpeg-turbo-windows-gcc-x86 ^
    ..
make install -j8
popd
rmdir build_gcc_x86 /s/q
goto:eof

:gcc_x86_64
echo build x86_64 use MinGW 
if exist build_gcc_x86_64 rmdir build_gcc_x86_64 /s/q
mkdir build_gcc_x86_64
pushd build_gcc_x86_64
rem gcc SJLJ or SEH distribution required

cmake -G "MinGW Makefiles" ^
    -DCMAKE_BUILD_TYPE=%build_type% ^
    -DCMAKE_DEBUG_POSTFIX=_d ^
    -DCMAKE_C_FLAGS=-m64 ^
    -DCMAKE_INSTALL_PREFIX=%sh_folder%/libjpeg-turbo-windows-gcc-x86_64 ^
    ..
make install -j8
popd
rmdir build_gcc_x86_64 /s/q
goto:eof

:end
popd

build_jpeg_turbo_gcc.bat在gitee仓库的位置: https://gitee.com/l0km/jpegwrapper/blob/master/dependencies/build_jpeg_turbo_gcc.bat

MSVC

MSVC编译脚本参见gitee仓库: https://gitee.com/l0km/jpegwrapper/blob/master/dependencies/build_jpeg_turbo_msvc.bat

该脚本可以一次性自动编译生成32/64位以及/MT /MD的所有4版本(RELEASE) 这个目录下可以找到已经编译好的libjpeg-turbo的所有windows版本 https://gitee.com/l0km/jpegwrapper/blob/master/dependencies

执行该文件夹下的all_build_jpeg_turbo_msvc.bat,可以一次编译编译出debug/release版本。

Linux

linux下编译libjpeg-turbo的脚本: https://gitee.com/l0km/jpegwrapper/blob/master/dependencies/build_jpeg_turbo.sh

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • solidity在线编辑器Remix中文版 原

    Remix是以太坊官方开源的Solidity在线集成开发环境,可以使用Solidity语言在网页内完成以太坊智能合约的在线开发、在线编译、在线测试、在线部署、在...

    用户1408045
  • iOS实现代码混淆

    从事iOS开发几年了,从未对代码加密加固,总是认为iOS APP一般是通过AppStore发布的,况且苹果的系统又很难攻破,根本就无需加密,但使用class-d...

    honey缘木鱼
  • 设计模式- 桥接模式(Bridge Pattern)

    当一个抽象可能有多个实现时,通常用继承来进行协调。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。继承机制将抽象部分与它的实现部分固定在一起,使得...

    易兒善
  • 反射 — Java 高级开发必须懂的

    理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。

    java思维导图
  • dotnet-warp && NSSM 部署 .net core 项目到 windows 服务

    易墨
  • 一键拼出你的微信好友图片墙

    上午发了张微信近 2000 位好友的头像拼图,让大伙儿看能不能快速找到自己的头像,没想到反响很强烈,引得阵阵惊呼与膜拜,没有料到。

    叫我龙总
  • ES6-Babel编译环境搭建

    里边的一个核心功能就是transform,把js代码编程抽象语法树AST。只要变成抽象语法树后,后期的插件才能根据这个抽象语法树进行降级,转成es5。

    xing.org1^
  • 华为“方舟编译器”到底是啥?一文看懂TA如何让手机性能再突破

    在华为春季发布盛典上,除了“HUAWEI P30”还有一个词也火了一把,那就是全新黑科技——“华为方舟编译器”!

    刘盼
  • ROS文件系统(工程结构)

    介绍catkin的编译系统,catkin工作空间的创建和结构,package软件包的创建和结构,介绍CMakeLists.txt文件,package.xml以及...

    小飞侠xp
  • LayaAir引擎入门教程:一篇学会用AS3语言开发HTML5(FlashDevelop开发环境)

    HTML5是一种热门的跨平台开发技术,随着引擎技术的发展,如今LayaAir引擎的产品性能已达到原生APP的水准,甚至可以直接用于开发APP、H...

    Layabox Charley

扫码关注云+社区

领取腾讯云代金券