首页 > 系统相关 >libwebp在windows下构建及编译运行

libwebp在windows下构建及编译运行

时间:2024-11-11 19:46:41浏览次数:6  
标签:文件 CMake windows 生成 编译 Visual Studio libwebp 构建

因为正在进行WEBP图像的学习,因此有必要对WEBP的官方实现——libwebp进行本地构建和编译,以方便对标准及代码的理解。

下面记录一下,在本地Windows电脑上,构建并编译libwebp的过程。

步骤一:下载源码

首先,获取 libwebp 的最新源码:

  • 从官方Git仓库克隆:

    git clone https://chromium.googlesource.com/webm/libwebp
    
  • 或者从官方网站下载源码压缩包,然后解压。

步骤二:安装必要的工具和依赖

  1. 安装Cmake(用于构建)
  2. 安装MinGW(用于编译、链接、生成可执行文件)
  3. 安装Visual Studio(作为2的替代)

步骤三:编译libwebp

1. 打开“开发者命令提示符”

为了使用正确的编译器和工具集,建议使用 Visual Studio 提供的“开发者命令提示符”:

  • 在开始菜单中找到 “Visual Studio 2019”(或您的版本)文件夹。
  • 点击 “x64 本机工具命令提示符”“x86 本机工具命令提示符”,取决于您要构建的目标平台(64 位或 32 位)。
2. 导航到 libwebp 源码目录

在这一步及往后的cmake操作中,建议在Visual Studio提供的开发者命令提示符中进行,可以确保所有cmake需要的环境已被配置,提供编译器和相关的构建工具。

(在开始菜单中找到**“Visual Studio 2019”**(或其他版本)文件夹;点击 “x64 本机工具命令提示符”“x86 本机工具命令提示符”,取决于要构建的目标平台(64 位或 32 位)。)

在命令提示符中,使用 cd 命令导航到您的 libwebp 源码目录,例如:

cd C:\libwebp
3. 创建并进入构建目录

为了保持源码目录整洁,建议创建一个单独的构建目录:

mkdir build
cd build
4. 运行 CMake 配置

在构建目录中,运行以下命令来生成 Visual Studio 解决方案和项目文件:

cmake -G "Visual Studio 16 2019" -A x64 ^
-DWEBP_BUILD_CWEBP=ON ^
-DWEBP_BUILD_DWEBP=ON ^
-DWEBP_BUILD_WEBPMUX=ON ^
-DWEBP_BUILD_LIBWEBPMUX=ON ^
-DWEBP_BUILD_EXTRAS=ON ^
-DWEBP_BUILD_ANIM_UTILS=ON ^
..

说明:

  • -G "Visual Studio 16 2019"
    

    指定生成器为 Visual Studio 2019。如果您使用的是其他版本,请调整为对应的版本:

    • Visual Studio 2017: "Visual Studio 15 2017"
    • Visual Studio 2022: "Visual Studio 17 2022"
  • -A x64 指定构建架构为 64 位。如果您需要构建 32 位版本,可以使用 -A Win32

  • -DWEBP_BUILD_WEBPMUX=ON:启用构建 webpmux 工具。

  • -DWEBP_BUILD_LIBWEBPMUX=ON:启用构建 libwebpmux 库。

  • -DWEBP_BUILD_EXTRAS=ON:构建额外的工具和示例,这可能包括您需要的依赖项。

  • -DWEBP_BUILD_ANIM_UTILS=ON:构建动画相关的工具,例如 gif2webp

注意: 在 Windows 命令提示符中,可以使用 ^ 作为命令换行符,以提高可读性。

如果想生成 Release 版本,可以添加 -DCMAKE_BUILD_TYPE=Release,不过对于 Visual Studio,这个参数通常被忽略,因为可以在生成过程中选择配置。

步骤四:生成解决方案

  • 在构建目录中,找到生成的 libwebp.sln 文件,双击打开。

  • 设置cwebp为启动项目,点击生成解决方案(此时执行了编译和链接的过程,也生成了可执行文件)。

  • 右键cwebp设置命令参数,如:

    -q 50 test.png -o out.webp

  • 运行成功。

关于Cmake和Visual Studio生成解决方案

作为小白,最近对工程中的cmake以及编译等知识存在混淆,在此做一些梳理。

CMake的作用
  • CMake 主要的作用生成构建系统,这意味着它根据 CMakeLists.txt 配置文件生成适合你系统和开发环境的构建文件(如 Makefile.sln 文件、Ninja 构建文件等)。CMake 本身并不会执行编译和链接,它只是负责配置和生成这些构建文件。
编译和链接过程
  • 编译过程:编译是将源代码(如 .cpp 文件)转化为目标文件(如 .obj.o 文件),这个过程是由 编译器(例如 cl.exe)来执行的。
  • 链接过程:链接是将多个目标文件和库文件合并成一个最终的可执行文件或共享库文件。链接工作通常由 链接器(如 link.exe)来完成。
CMake的工作流程
  1. CMake 配置:
    • 你运行 cmake 命令,CMake 会解析 CMakeLists.txt,然后生成相应的构建系统文件(例如,在 Windows 上生成一个 .sln 文件)。
  2. CMake 不直接编译:
    • 在执行 cmake 后,CMake 只是生成了构建系统的配置文件(如 .sln 文件或 Makefile),并没有执行实际的编译操作。
  3. 编译和链接由构建工具(如 MSBuildmake 或 Visual Studio)完成:
    • 生成 .sln 文件后,实际的编译和链接工作由构建工具完成。在 Visual Studio 中,构建工具是 MSBuild,它会根据 .sln 文件中的信息,调用编译器(如 cl.exe)进行编译,然后调用链接器(如 link.exe)进行链接,最终生成可执行文件或库文件。
CMake 生成 .sln 文件后与 Visual Studio 生成解决方案的区别
  • CMake 生成 .sln 文件
    • CMake 是一个构建系统工具,它的作用是根据项目的配置(如 CMakeLists.txt 文件)生成特定的构建文件。在 Windows 上,CMake 生成的是 Visual Studio 所使用的 .sln 文件。
    • 当你在 CMake 中执行 cmake -G "Visual Studio 16 2019" . 后,CMake 会根据你的配置生成 .sln 文件,并且其中包含了所有的项目和构建设置。
    • 生成的 .sln 文件中已经包括了项目的源代码路径、依赖关系、编译选项等配置信息。你可以直接在 Visual Studio 中打开这个 .sln 文件。
  • Visual Studio 生成解决方案
    • 这是在你打开 .sln 文件之后,实际执行的构建操作。通过点击 生成解决方案,Visual Studio 会根据 .sln 文件中的配置,开始构建所有项目并执行编译和链接。
    • 这个操作是具体的编译步骤,它会生成目标文件、库文件或者可执行文件,而 CMake 生成的 .sln 文件本身并不执行这些操作

标签:文件,CMake,windows,生成,编译,Visual,Studio,libwebp,构建
From: https://blog.csdn.net/m0_47623965/article/details/143660665

相关文章

  • 常见 setup.exe 参数 有关 Setup 命令行参数的其他信息,请参阅 Setup Help 文件。有
    Windows安装程序安装或升级Windows。Setup.exe[/debughelp][/auto<upgrade;dataonly;clean>][/quiet][/installdrivers<driver_folder_path>][/noreboot][/installangpacks<language_packfolder_path>][/showoobe<none;full>][/unattend:<ans......
  • 推荐一款Windows卸载工具:
    GlaryAbsoluteUninstaller类似于标准的Windows添加/删除程序,但功能更强大。标准的添加/删除程序无法完全卸载应用程序,这通常会在硬盘上留下损坏的注册表项和不需要的文件。您的计算机拥有的垃圾文件越多,运行速度就越慢。AbsoluteUninstaller可以在几秒钟内清除所有垃圾文件......
  • win 11 开发板,windows,ubuntu虚拟机网络互通
    确保在同一个网段里面就行如果ping开发板不通,将win防火墙关闭了试一试虚拟机使用桥接模式,桥接到正确的网卡上,此处使用的是usb网卡编辑->虚拟机网络编辑器ubuntu手动设置桥接的网卡信息此处ens32是桥接的网卡ens33是NAT网卡windows也是同样设置,注意网段保持一致虚拟......
  • 标题:Windows系统启动流程
      Windows的启动过程包括以下几个阶段: 一,启动自检阶段 这个阶段主要是读取 BIOS ,然后内存,CPU,硬盘,键盘等设备进行自检。这个阶段在屏幕上显示就是自检的那些打印信息。在打开计算机电源时,首先开始电源启动自检过程。在BIOS中包含一些基本的指令,能够帮助计算机在没有......
  • ESP32开发__搭建VSCode开发环境试编译项目
    目录1.概述2.安装相关必要插件3.VSCode及相关扩展件安装3.1.VSCode3.2.ESP-IDFVisualStudioCodeExtension3.3.ConfigureESP-IDF4.Demo试运行4.1.打开工程4.2.连接设备并配置端口4.3.配置工程4.3.1. 设置“目标”芯片4.3.2.menuconfig配置工程选......
  • windows11 安装驱动无法验证此设备所需的驱动程序的数字签名。
    参考 Win11和Win10怎么禁用驱动程序强制签名?关闭Windows系统驱动强制签名的技巧?-知乎参考  windows10该值受安全引导策略保护,无法进行修改或删除。禁用驱动程序强制签名_该值受安全引导策略保护无法进行修改或删除-CSDN博客 什么是驱动程序签名?驱动程序签名又叫做驱动......
  • rstrui.exe 是 Windows 系统中的系统还原程序,全名为 "System Restore User Interface"
    rstrui.exe是Windows系统中的系统还原程序,全名为"SystemRestoreUserInterface"。它是Windows操作系统的一部分,允许用户通过图形界面启动系统还原功能,以恢复计算机到先前的状态。以下是关于rstrui.exe的详细解释:1. 功能系统还原:rstrui.exe 负责启动系统还原向导,帮......
  • gcc 1.c和g++ 1.c编译阶段有什么区别?如何知道g++编译默认会定义_GNU_SOURCE?
    gcc1.c和g++1.c编译阶段有什么区别?借用 gcc1.c和g++1.c有什么区别? 的示例代码,以汇编代码为比较目标,再经过汇编,最后生成ELF文件,三个过程结果均无差异,这个阶段充分证明了c和c++是多么相似。编译到汇编gcc-S1.c-o1.sg++-S1.c-o11.s .file "1.c"......
  • 随着最新的补丁更新,Windows 再次变得容易受到攻击
    SafeBreach专家AlonLeviev发布了一款名为WindowsDowndate的工具,可用于对Windows10、Windows11和WindowsServer版本进行降级攻击。这种攻击允许利用已经修补的漏洞,因为操作系统再次容易受到旧错误的影响。WindowsDowndate是一个开源Python工具,预编译为Windows......
  • NetDiag 是一个由 Microsoft 提供的网络诊断工具,用于帮助管理员和用户诊断和排除网络
    Netdiag|MicrosoftLearnNetDiag是一个由Microsoft提供的网络诊断工具,用于帮助管理员和用户诊断和排除网络连接和配置方面的问题。它主要用于在Windows操作系统中分析和诊断与网络连接相关的问题,尤其是在ActiveDirectory环境中的问题。起源和历史背景:早期的网络诊......