Windows平台下,编译libjpeg源码生成vs2013工程

1.前言

最近需要为自己的设备开发驱动,不可避免的就要接触到了libusb和libuvc这两个开源的基于usb设备操作库,在编译libuvc源码时碰到了CMake的警告信息,主要是缺少了JPEG这个图像解析库,当然如果项目中不需要用到这个功能的是可以忽略掉的,但是怕以后会有用到的时候,因此就直接找到libjpeg的源码进行编译以补充CMake中需要的库文件。以下就是编译libjpeg的过程记录。

2.正文

首先是源码库的下载(点击这里下载),一般来说开源库的源码我都会先上github下载,但是github上的libjpeg源码项目似乎是好久没有更新了,github上libjpeg(点击这里)目前的版本是2014年1月份的9a版,现在最新版本是2020年1月份的9d版了,所以根据github上的项目提供的开发这个库的团队的网站,即可找到关于libjpeg的所有版本的下载链接。

Windows平台下,编译libjpeg源码生成vs2013工程_第1张图片

这里我选择的是jpegsr9c这一版本来编译,下载完成后,将压缩包解压,编译有两种方式,区别在于第一步命令行的选择(这里我使用 jpegsr9b 与 jpegsr9c 两个版本来说明):

第一种:

第一步,Win +R 打开运行窗口,输入cmd命令打开dos命令窗口,找到vs安装目录下(以vs2013为例,路径如下图所示)的 vsvars32.bat 这个文件,

Windows平台下,编译libjpeg源码生成vs2013工程_第2张图片

将其拖放到dos命令窗口中,按下回车即可。

第二步, 进入到libjpeg解压好的jpeg-9b文件下,输入 “nmake /f makefile.vc setup-v10” 命令后按回车,不出意外的话就可以生成我们想要的 .sln 工程文件了。

注意:"nmake /f makefile.vc setup-v10" 这条命令中的 "setup-v10" 是由你所下载的libjpeg版本所定的,就我所知,libjpeg的9a、9b版本有支持v10,但是到了9c之后就只有v15了,所以如果要编译的是9c版,需改成"nmake /f makefile.vc setup-v15",具体怎么看可以直接打开解压后的文件夹,如下:

Windows平台下,编译libjpeg源码生成vs2013工程_第3张图片

 编译过程及结果:

Windows平台下,编译libjpeg源码生成vs2013工程_第4张图片

第二种:

第一步,打开vs2013命令行(vs2013 x86 本机工具命令提示)执行编译,一般是在开始菜单中vs文件夹下的 visual studio tools。与第一种相比,区别就在这:在解压好的文件夹中找到 makefile.vc 这个文件,使用文本编辑器打开,将 !include  

Windows平台下,编译libjpeg源码生成vs2013工程_第5张图片

改为 !include 在电脑C盘搜索,寻找到 win32.mak 文件根据路径修改即可(一般而言会在 C:\Program Files (x86)\Microsoft SDKs\Windows\ 此路径下)。若是电脑上没有这个文件,可以在网上下载然后放置到你想放的位置,并修改相应的路径即可。

第二步与第一种编译方式相同,不再赘述。

编译过程及结果:可以看到,在编译9c版时,如果不修改成 "setup-v15" ,将会报错。

Windows平台下,编译libjpeg源码生成vs2013工程_第6张图片

最后,生成了我们想要的 .sln 工程,这时候就简单多了,打开jpeg-9c文件夹,运行 jpeg.sln ,这时候需要注意,因为我们生成的是v15,版本明显比我们的vs2013高,因此需要将平台工具集从 v141 修改为 v120,右键 jpeg 项目选择属性菜单,如下:

Windows平台下,编译libjpeg源码生成vs2013工程_第7张图片

 修改完成后直接编译即可生成Release版本的静态链接库 jpeg.lib了,若需要其他版本则需自己配置vs配置管理器了。在使用上,可参考该博客,直接复制代码,修改一下头文件路径,以及包含lib文件即可。 

参考:

(1) VS2013编译libjpeg库;

(2) vs2017编译libjpeg(jpeg-9c).

你可能感兴趣的:(源码编译)