查找使用系统包
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的工程目录下执行,是会有缓存的,如果查找失败,下次查找也会使用缓存的结果,如果要每次强制重新检测,请切换到非工程目录下执行上面的命令。