diff options
| author | ruki <waruqi@gmail.com> | 2019-10-05 20:34:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2019-10-05 20:34:48 +0800 |
| commit | d96be2b1e6bb20f65272486e78025e2231a9bacb (patch) | |
| tree | 9ccd72e93784f08986e15d05e668f4628e7b807b | |
| parent | 1ad2ad4254cf8052daa325550f8e2c1e9e43a426 (diff) | |
| download | xmake-docs-d96be2b1e6bb20f65272486e78025e2231a9bacb.tar.gz xmake-docs-d96be2b1e6bb20f65272486e78025e2231a9bacb.zip | |
update find_package docs
| -rw-r--r-- | package/system_package.md | 86 | ||||
| -rw-r--r-- | zh-cn/package/system_package.md | 77 |
2 files changed, 134 insertions, 29 deletions
diff --git a/package/system_package.md b/package/system_package.md index a1650c73..9f7044da 100644 --- a/package/system_package.md +++ b/package/system_package.md @@ -1,11 +1,6 @@ +## Find System Package -If you feel that the above built-in package management method is very inconvenient, you can use the extension interface [lib.detect.find_package](/manual/extension_modules?id=detectfind_package) to find the system. Existing dependencies. - -Currently this interface supports the following package management support: - -* vcpkg -* homebrew -* pkg-config +If you feel that the above built-in package management method is very inconvenient, you can use the built-in interface `find_packages` provided by xmake. And through the system and third-party package management tools for the installation of the dependency package, and then integrated with xmake, for example, we look for an openssl package: @@ -17,8 +12,8 @@ The returned results are as follows: ```lua { - {links = {"ssl", "crypto"}, linkdirs = {"/usr/local/lib"}, includedirs = {"/usr/local/include"}}, - {links = {"z"}, linkdirs = {"/usr/local/lib"}, includedirs = {"/usr/local/include"}} + {links = {"ssl", "crypto"}, linkdirs = {"/usr/local/lib"}, includedirs = {"/usr/local/include"}}, + {links = {"z"}, linkdirs = {"/usr/local/lib"}, includedirs = {"/usr/local/include"}} } ``` @@ -41,23 +36,37 @@ target("test") end) ``` +Currently this interface supports the following package management support: + +* conan +* vcpkg +* homebrew +* pkg-config + If third-party tools such as `homebrew`, `pkg-config` are installed on the system, then this interface will try to use them to improve the search results. -Another, we can also find packages from the given package manager. For example: +For a more complete description of the usage, please refer to the [find_packages](/manual/builtin_modules?id=find_packages) interface documentation. + +Of course, if you feel that integrating third-party dependencies by looking for packages is not enough, you can also directly integrate remote dependencies through `add_requires`. +For details, see the documentation: [Using Remote Dependencies](/package/remote_package) + +## Find homebrew package + +Alternatively, we can also find the package from the manually specified package manager: ```lua -find_packages("brew::pcre2/libpcre2-8", "vcpkg::zlib") +find_packages("brew::pcre2/libpcre2-8", "brew::x264") ``` -For a more complete description of the usage, please refer to the [find_packages](/manual/builtin_modules?id=find_packages) interface documentation. +We only need to add the `brew::` prefix, you can explicitly specify the package source from homebrew to find the package, if there are multiple pkgconfig files in `brew::pcre2`, for example: libpcre2-8.pc, libpcre2-16. Pc, libpcre2-32.pc -## Homebrew Integration Support +Then we can use `brew::pcre2/libpcre2-16` to select the link library information specified by the corresponding pkgconfig file. -Since homebrew is generally installed directly into the system, users do not need to do any integration work, `lib.detect.find_package` has been natively seamlessly supported. +Since homebrew is generally installed directly into the system, users do not need to do any integration work, `find_packages` has been natively seamlessly supported. -## Vcpkg Integration Support +## Find vcpkg package -Currently xmake v2.2.2 version already supports vcpkg, users only need to install vcpkg, execute `$ vcpkg integrate install`, xmake will automatically detect the root path of vcpkg from the system, and then automatically adapt the bread. +Currently xmake v2.2.2 version has already supported vcpkg, users only need to install vcpkg, execute `$ vcpkg integrate install`, xmake will automatically detect the root path of vcpkg from the system, and then automatically adapt the bread. Of course, we can also manually specify the root path of vcpkg to support: @@ -65,9 +74,52 @@ Of course, we can also manually specify the root path of vcpkg to support: $ xmake f --vcpkg=f:\vcpkg ``` -Or we can set it to the global configuration to avoid repeating the settings each time we switch configurations: +Or we can set it to the global configuration to avoid repeating the settings each time the configuration is switched: ```console $ xmake g --vcpkg=f:\vcpkg ``` +Then, we can specify the dependency package in vcpkg by using the `vcpkg::` prefix: + +```lua +find_packages("vcpkg::zlib", "vcpkg::openssl") +``` + +## Find the conan package + +Xmake v2.2.6 and later versions also support finding the specified package from the conan: + +```lua +find_packages("conan::OpenSSL/1.0.2n@conan/stable") +``` + +## Test command for finding package + +We can use the following command to quickly detect the package information specified on the system: + +```console +$ xmake l find_packages x264 +{ + { + Links = { + "x264" + }, + Linkdirs = { + "/usr/local/Cellar/x264/r2699/lib" + }, + Version = "0.148.2699 a5e06b9", + Includeirs = { + "/usr/local/Cellar/x264/r2699/include" + } + } +} +``` + +We can also add a third-party package manager prefix to test: + +```console +xmake l find_packages conan::OpenSSL/1.0.2n@conan/stable +``` + +!> It should be noted that if the find_package command is executed in the project directory with xmake.lua, there will be a cache. If the search fails, the next lookup will also use the cached result. If you want to force a retest every time, Please switch to the non-project directory to execute the above command. diff --git a/zh-cn/package/system_package.md b/zh-cn/package/system_package.md index eda893e9..44c42d72 100644 --- a/zh-cn/package/system_package.md +++ b/zh-cn/package/system_package.md @@ -1,11 +1,7 @@ -如果觉得上述内置包的管理方式非常不方便,可以通过xmake提供的内置接口`find_packages`。 - -目前此接口支持以下一些包管理支持: +## 查找系统包 -* vcpkg -* homebrew -* pkg-config +如果觉得上述内置包的管理方式非常不方便,可以通过xmake提供的内置接口`find_packages`。 并且通过系统和第三方包管理工具进行依赖包的安装,然后与xmake进行集成使用,例如我们查找一个openssl包: @@ -37,25 +33,38 @@ option("zlib") ```lua target("test") on_load(function (target) - target:add(find_package("openssl", "zlib")) + target:add(find_packages("openssl", "zlib")) end) ``` +目前此接口支持以下一些包管理支持: + +* conan +* vcpkg +* homebrew +* pkg-config + 如果系统上装有`homebrew`, `pkg-config`等第三方工具,那么此接口会尝试使用它们去改进查找结果。 -另外,我们也可以从指定的包管理器查找包: +更完整的使用描述,请参考:[find_packages](/zh-cn/manual/builtin_modules?id=find_packages)接口文档。 + +当然,如果觉得通过查找包的方式来集成第三方依赖包还不能满足需求,也可以通过`add_requires`来直接集成远程依赖包,具体请查看文档:[使用远程依赖包](https://xmake.io/#/zh-cn/package/remote_package) + +## 查找homebrew包 + +另外,我们也可以从手动指定的包管理器查找包: ```lua -find_packages("brew::pcre2/libpcre2-8", "vcpkg::zlib") +find_packages("brew::pcre2/libpcre2-8", "brew::x264") ``` -更完整的使用描述,请参考:[find_packages](/zh-cn/manual/builtin_modules?id=find_packages)接口文档。 +我们只需要添加`brew::`前缀,就可以显式指定从homebrew的包源来查找包,如果`brew::pcre2`存在多个pkgconfig文件,例如:libpcre2-8.pc, libpcre2-16.pc, libpcre2-32.pc -## homebrew集成支持 +那么我们可以通过`brew::pcre2/libpcre2-16`来选择对应的pkgconfig文件指定的链接库信息。 由于homebrew一般都是把包直接装到的系统中去了,因此用户不需要做任何集成工作,`find_packages`就已经原生无缝支持。 -## vcpkg集成支持 +## 查找vcpkg包 目前xmake v2.2.2版本已经支持了vcpkg,用户只需要装完vcpkg后,执行`$ vcpkg integrate install`,xmake就能自动从系统中检测到vcpkg的根路径,然后自动适配里面包。 @@ -71,3 +80,47 @@ $ xmake f --vcpkg=f:\vcpkg $ xmake g --vcpkg=f:\vcpkg ``` +然后,我们就可以通过`vcpkg::`前缀,来指定查找vcpkg中的依赖包了: + +```lua +find_packages("vcpkg::zlib", "vcpkg::openssl") +``` + +## 查找conan包 + +xmake v2.2.6以后的版本,也支持从conan中查找指定的包: + +```lua +find_packages("conan::OpenSSL/1.0.2n@conan/stable") +``` + +## 查找包快速测试 + +我们可以使用下面的命令,快速检测系统上指定的包信息: + +```console +$ xmake l find_packages 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_packages conan::OpenSSL/1.0.2n@conan/stable +``` + +!> 需要注意的是,find_package命令如果在带有xmake.lua的工程目录下执行,是会有缓存的,如果查找失败,下次查找也会使用缓存的结果,如果要每次强制重新检测,请切换到非工程目录下执行上面的命令。 + |
