如何在通过vcpkg编译库时指定CMake变量?以libwebm的WebM Parser模块为例
如何在通过vcpkg编译库时指定CMake变量?以libwebm的WebM Parser模块为例
我来帮你搞定这个问题!vcpkg其实提供了几种实用方式给特定包传递CMake配置变量,针对你需要启用libwebm的WebM Parser模块的场景,我给你详细拆解下可行的方案:
方案一:临时命令行传递(快速测试用)
如果你只是临时需要编译一次带WebM Parser的libwebm,直接在vcpkg install命令里附加CMake参数就行。不过要注意,得先把已安装的libwebm卸载干净,不然vcpkg会直接用缓存的包,不会重新编译。
步骤如下:
- 先卸载现有版本:
vcpkg remove libwebm:x64-windows
- 带着CMake参数重新安装:
vcpkg install libwebm:x64-windows --cmake-args "-DENABLE_WEBM_PARSER:BOOL=ON"
这个参数会把ENABLE_WEBM_PARSER设为ON,直接传递给libwebm的CMake编译流程。
方案二:自定义Triplet(持久化复用)
如果你以后还需要多次安装带这个配置的libwebm,或者要给多个包统一配置,自定义triplet会更方便。
- 找到你的vcpkg目录,在
triplets文件夹下新建一个custom子目录(如果没有的话)。 - 复制
triplets/x64-windows.cmake到triplets/custom里,重命名为x64-windows-webm-parser.cmake。 - 打开这个新文件,在末尾添加一行:
set(VCPKG_CMAKE_ARGS "-DENABLE_WEBM_PARSER:BOOL=ON" ${VCPKG_CMAKE_ARGS})
这行代码会把我们需要的CMake变量加入到这个triplet的默认配置里。
4. 用自定义triplet安装libwebm:
vcpkg install libwebm:x64-windows-webm-parser
方案三:覆盖Portfile(长期定制包配置)
如果需要长期修改libwebm的编译配置,甚至添加自己的定制化内容,可以用vcpkg的overlay ports功能来覆盖官方的portfile。
- 在vcpkg目录外新建一个文件夹,比如
vcpkg-overlay-ports,然后在里面创建libwebm子文件夹。 - 复制vcpkg自带的libwebm portfile(路径一般是
vcpkg/ports/libwebm/portfile.cmake)到这个新建的libwebm文件夹中。 - 修改这个portfile,找到
vcpkg_cmake_configure的部分,把-DENABLE_WEBM_PARSER:BOOL=ON加入到OPTIONS里:
vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DBUILD_TESTING=OFF # 保留原有配置 -DENABLE_WEBM_PARSER:BOOL=ON # 新增这一行启用WebM Parser )
- 执行安装时指定overlay ports路径:
vcpkg install libwebm:x64-windows --overlay-ports=./vcpkg-overlay-ports
这些方法都能帮你通过vcpkg编译出带WebM Parser模块的libwebm,而且vcpkg会自动处理依赖和编译环境,应该能解决你之前手动编译报错的问题。
备注:内容来源于stack exchange,提问作者Scooter
相关产品推荐
相关产品推荐

