Skip to content

如何 vcpkg 集成到 emake 中?

Linwei edited this page Aug 29, 2024 · 1 revision

有两种方式导入 vcpkg 中安装的包

方法1

由于 vcpkg 安装的包都是位于:

D:\vcpkg\installed

目录下面的,那么最简单的集成方式就是在 emake.ini 配置里写上 vcpkg 的 include/lib 目录即可:

[default]
include=d:\vcpkg\installed\x86-mingw-dynamic\include
lib=d:\vcpkg\installed\x86-mingw-dynamic\lib

具体是 x86-mingw-dynamic 还是 x86-mingw-static 要看你 vcpkg install 时候 triplet 设置的是啥,比如:

vcpkg install --triplet=x86-mingw-static  {package_name}

则会安装到 vcpkg\installed\x86-mingw-static 下面。

再完善一点,还可以考虑 debug/release 两种配置:

[default]
include=d:\vcpkg\installed\x86-mingw-dynamic\include
lib@release=d:\vcpkg\installed\x86-mingw-dynamic\lib
lib@debug=d:\vcpkg\installed\x86-mingw-dynamic\debug\lib

那么在不同 profile 下面就会用到不同的 -L 目录,然后在你项目的工程文件里:

link: ogg, opus

连接这些包的 .a 文件就行。

方法2

使用 pkg-config 管理 vcpkg 里的包,由于 vcpkg 的包安装都会在 lib\pkgconfig 里创建 .pc 的文件,就可以直接用 pkg-config 来依赖分析和包导入了,继续修改 emake.ini

[default]
pkgconfig=d:\path\to\pkg-config.exe
pcflag=--env-only
environ=PKG_CONFIG_PATH=d:\vcpkg\installed\x86-mingw-dynamic\lib\pkgconfig

其实就是用 environ 定义了环境变量 $PKG_CONFIG_PATH 指向 vcpkg 各个包的 .pc 文件目录,然后用 pcflagpkg-config 加一个 --env-only 的参数,意思是只分析 $PKG_CONFIG_PATH 里指向的包。

然后在你项目的工程文件里:

package: ogg, sqlite3, libpng, zlib, miniz
package: de256, x265
package: python3

就能直接导入包了,不用一个包一个包的去配置各自的库文件和 include 路径,用起来比较方便。