conan cache¶
在本地缓存(recipes 和/或 packages)中执行文件操作。
conan cache path¶
$ conan cache path -h
usage: conan cache path [-h] [-f FORMAT] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF]
[--folder {export_source,source,build,metadata}]
reference
Show the path to the Conan cache for a given reference.
positional arguments:
reference Recipe reference or Package reference
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
--folder {export_source,source,build,metadata}
Path to show. The 'build' requires a package
reference. If the argument is not passed, it shows
'exports' path for recipe references and 'package'
folder for package references.
conan cache path
返回给定引用的缓存路径。根据引用,它可以返回 recipe 的路径,或 package 二进制文件的路径。
假设我们已经在当前缓存中创建了一个 package,使用命令:
$ conan new cmake_lib -d name=pkg -d version=0.1
$ conan create .
...
Requirements
pkg/0.1#cdc0d9d0e8f554d3df2388c535137d77 - Cache
Requirements
pkg/0.1#cdc0d9d0e8f554d3df2388c535137d77:2401fa1d188d289bb25c37cfa3317e13e377a351 - Build
现在我们有兴趣获取 pkg/0.1
recipe conanfile.py
导出的路径
$ conan cache path pkg/0.1
<path to conan cache>/p/5cb229164ec1d245/e
$ ls <path to conan cache>/p/5cb229164ec1d245/e
conanfile.py conanmanifest.txt
默认情况下,如果未指定 recipe revision,则表示缓存中的“最新” revision。这也可以通过字面量 #latest
显式指定,并且任何 recipe revision 都可以显式定义,以下命令与上述命令等效
$ conan cache path pkg/0.1#latest
<path to conan cache>/p/5cb229164ec1d245/e
# The recipe revision might be different in your case.
# Check the "conan create" output to get yours
$ conan cache path pkg/0.1#cdc0d9d0e8f554d3df2388c535137d77
<path to conan cache>/p/5cb229164ec1d245/e
与 recipe 文件夹一起,还有两个其他文件夹,对于使用此 recipe 生成的所有二进制文件都是通用的:“export_source”文件夹和“source”文件夹。两者都可以通过以下方式获得
$ conan cache path pkg/0.1 --folder=export_source
<path to conan cache>/p/5cb229164ec1d245/es
$ ls <path to conan cache>/p/5cb229164ec1d245/es
CMakeLists.txt include/ src/
$ conan cache path pkg/0.1 --folder=source
<path to conan cache>/p/5cb229164ec1d245/s
$ ls <path to conan cache>/p/5cb229164ec1d245/s
CMakeLists.txt include/ src/
在这种情况下,“source”文件夹的内容与“export_source”文件夹的内容相同,因为 recipe 没有实现任何 source()
方法来检索代码或对代码执行任何其他操作,例如应用补丁。
默认情况下,recipe revision 将为 #latest
,这遵循与上述相同的规则。
请注意,如果 package 不是从源代码构建的,例如从服务器检索预编译的二进制文件,则这两个文件夹将不存在。
也可以通过提供 package_id
来获取二进制 package 的文件夹
# Your package_id might be different, it depends on the platform
# Check the "conan create" output to obtain yours
$ conan cache path pkg/0.1:2401fa1d188d289bb25c37cfa3317e13e377a351
<path to conan cache>/p/1cae77d6250c23b7/p
$ ls <path to conan cache>/p/1cae77d6250c23b7/p
conaninfo.txt conanmanifest.txt include/ lib/
与上面一样,默认情况下它将解析为“最新”的 recipe revision 和 package revision。上面的命令等效于显式定义 #latest
或确切的 revisions。以下所有命令都与上面的命令等效
$ conan cache path pkg/0.1#latest:2401fa1d188d289bb25c37cfa3317e13e377a351
<path to conan cache>/p/1cae77d6250c23b7/p
$ conan cache path pkg/0.1#latest:2401fa1d188d289bb25c37cfa3317e13e377a351#latest
<path to conan cache>/p/1cae77d6250c23b7/p
$ conan cache path pkg/0.1#cdc0d9d0e8f554d3df2388c535137d77:2401fa1d188d289bb25c37cfa3317e13e377a351
<path to conan cache>/p/1cae77d6250c23b7/p
可以访问包含所有临时构建工件的“build”文件夹
$ conan cache path pkg/0.1:2401fa1d188d289bb25c37cfa3317e13e377a351 --folder=build
<path to conan cache>/p/1cae77d6250c23b7/b
ls -al <path to conan cache>/p/1cae77d6250c23b7/b
build/ CMakeLists.txt CMakeUserPresets.json conaninfo.txt include/ src/
同样,“build”文件夹仅在 package 从源代码构建时才存在。
注意
最佳实践
此
conan cache path
命令旨在用于最终检查缓存,但缓存 package 存储必须被视为只读。请勿修改、更改、删除或从缓存中添加文件。如果您使用此命令获取工件的路径然后复制它们,请考虑使用
deployer
。在一般情况下,不鼓励手动从缓存中提取工件。开发人员可以使用
conan list ... --format=compact
以紧凑的方式获取完整引用,可以复制并粘贴到conan cache path
命令中
conan cache clean¶
$ conan cache clean -h
usage: conan cache clean [-h] [--out-file OUT_FILE] [-v [V]] [-cc CORE_CONF]
[-s] [-b] [-d] [-t] [-bs] [-p PACKAGE_QUERY]
[pattern]
Remove non-critical folders from the cache, like source, build and/or download
(.tgz store) ones.
positional arguments:
pattern Selection pattern for references to clean
options:
-h, --help show this help message and exit
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-s, --source Clean source folders
-b, --build Clean build folders
-d, --download Clean download and metadata folders
-t, --temp Clean temporary folders
-bs, --backup-sources
Clean backup sources
-p PACKAGE_QUERY, --package-query PACKAGE_QUERY
Remove only the packages matching a specific query,
e.g., os=Windows AND (arch=x86 OR compiler=gcc)
此命令将删除所有临时文件夹,以及 Conan 在执行过程中生成的 source、build 和 download 文件夹。它将对 pattern 中传递的每个匹配引用执行此操作,除非提供了特定标志,在这种情况下,仅删除指定的文件夹。
示例:
删除所有非关键文件
$ conan cache clean "*"
删除所有临时文件
$ conan cache clean "*" --temp
删除
zlib
recipe 的 download 文件夹$ conan cache clean "zlib/*" --download
删除除
zlib
recipe 的 download 文件夹之外的所有内容$ conan cache clean "zlib/*" --source --build --temp
conan cache check-integrity¶
$ conan cache check-integrity -h
usage: conan cache check-integrity [-h] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF] [-p PACKAGE_QUERY]
pattern
Check the integrity of the local cache for the given references
positional arguments:
pattern Selection pattern for references to check integrity
for
options:
-h, --help show this help message and exit
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-p PACKAGE_QUERY, --package-query PACKAGE_QUERY
Only the packages matching a specific query, e.g.,
os=Windows AND (arch=x86 OR compiler=gcc)
conan cache check-integrity
命令检查本地缓存中 Conan packages 的完整性。这意味着如果 conanmanifest.txt
中包含的任何文件丢失或与该文件中声明的校验和不匹配,它将抛出错误。
例如,要验证整个 Conan 本地缓存的完整性,请执行
$ conan cache check-integrity "*"
mypkg/1.0: Integrity checked: ok
mypkg/1.0:454923cd42d0da27b9b1294ebc3e4ecc84020747: Integrity checked: ok
mypkg/1.0:454923cd42d0da27b9b1294ebc3e4ecc84020747: Integrity checked: ok
zlib/1.2.11: Integrity checked: ok
zlib/1.2.11:6fe7fa69f760aee504e0be85c12b2327c716f9e7: Integrity checked: ok
conan cache backup-upload¶
$ conan cache backup-upload -h
usage: conan cache backup-upload [-h] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF]
Upload all the source backups present in the cache
options:
-h, --help show this help message and exit
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
conan cache backup-upload
将所有本地缓存中存在的 source backups 上传到备份服务器(不包括那些从 core.sources:exclude_urls
conf 中列出的排除 url 获取的),无论它们属于哪个 package(如果有)。
conan cache save¶
$ conan cache save -h
usage: conan cache save [-h] [-f FORMAT] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF] [-l LIST] [--file FILE]
[pattern]
Get the artifacts from a package list and archive them
positional arguments:
pattern A pattern in the form
'pkg/version#revision:package_id#revision', e.g:
zlib/1.2.13:* means all binaries for zlib/1.2.13. If
revision is not specified, it is assumed latest one.
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-l LIST, --list LIST Package list of packages to save
--file FILE Save to this tgz file
在 从缓存保存和恢复 packages 中阅读更多内容。
conan cache restore¶
$ conan cache restore -h
usage: conan cache restore [-h] [-f FORMAT] [--out-file OUT_FILE] [-v [V]]
[-cc CORE_CONF]
file
Put the artifacts from an archive into the cache
positional arguments:
file Path to archive to restore
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
在 从缓存保存和恢复 packages 中阅读更多内容。