Skip to content

查找使用系统包

Xmake 对远程包和系统包的使用进行了统一,全部使用 add_requires("zlib") 接口来描述集成,而默认的配置方式,它会优先从系统上查找库,如果没有,会自动下载安装集成。

而如果我们仅仅想查找使用系统库,不想远程下载,可以这么配置:

lua
add_requires("zlib", {system = true})

target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("zlib")

通过 {system = true} 就可以强制禁用远程下载,这时候,他就等价于 Xmake/CMake 的 find_package,但是更加简单易用,并且和远程包使用方式完全一致。

默认情况下,如果找不到系统库,就是提示失败,如果这个包是可选的,那么可以额外配置 {optional = true} 选项。

lua
add_requires("zlib", {system = true, optional = true})

查找包快速测试

我们可以使用下面的命令,快速检测系统上指定的包信息:

console
$ xmake l find_package x264
{
    links = {
      "x264"
    },
    linkdirs = {
      "/usr/local/Cellar/x264/r2699/lib"
    },
    version = "0.148.2699 a5e06b9",
    includedirs = {
      "/usr/local/Cellar/x264/r2699/include"
    }
}

我们也可以追加第三方包管理器前缀来测试:

console
xmake l find_package conan::OpenSSL/1.0.2g

!> 需要注意的是,find_package命令如果在带有xmake.lua的工程目录下执行,是会有缓存的,如果查找失败,下次查找也会使用缓存的结果,如果要每次强制重新检测,请切换到非工程目录下执行上面的命令。