conan lock add¶
$ conan lock add -h
usage: conan lock add [-h] [--out-file OUT_FILE]
[-v [{quiet,error,warning,notice,status,,verbose,debug,v,trace,vv}]]
[-cc CORE_CONF] [--requires REQUIRES]
[--build-requires BUILD_REQUIRES]
[--python-requires PYTHON_REQUIRES]
[--config-requires CONFIG_REQUIRES]
[--lockfile-out LOCKFILE_OUT] [--lockfile LOCKFILE]
Add requires, build-requires or python-requires to an existing or new
lockfile. The resulting lockfile will be ordered, newer versions/revisions
first. References can be supplied with and without revisions like "--
requires=pkg/version", but they must be package references, including at least
the version, and they cannot contain a version range.
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 [{quiet,error,warning,notice,status,,verbose,debug,v,trace,vv}]
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
--requires REQUIRES Add references to lockfile.
--build-requires BUILD_REQUIRES
Add build-requires to lockfile
--python-requires PYTHON_REQUIRES
Add python-requires to lockfile
--config-requires CONFIG_REQUIRES
Add config-requires to lockfile
--lockfile-out LOCKFILE_OUT
Filename of the created lockfile
--lockfile LOCKFILE Filename of the input lockfile
conan lock add 命令能够将包版本添加到现有的或新的锁文件中 requires、build_requires、python_requires 或 config_requires。
例如,以下命令能够创建一个锁文件(默认情况下,名称为 conan.lock)
$ conan lock add --requires=pkg/1.1 --build-requires=tool/2.2 --python-requires=mypytool/3.3
Generated lockfile: ...conan.lock
$cat conan.lock
{
"version": "0.5",
"requires": [
"pkg/1.1"
],
"build_requires": [
"tool/2.2"
],
"python_requires": [
"mypytool/3.3"
]
}
conan lock add 命令还允许提供一个现有的锁文件作为输入,它会将参数添加到现有锁文件中,并保持包版本排序。
$ conan lock add --build-requires=tool/2.3 --lockfile=conan.lock
Using lockfile: '.../conan.lock'
Generated lockfile: .../conan.lock
$ cat conan.lock
{
"version": "0.5",
"requires": [
"pkg/1.1"
],
"build_requires": [
"tool/2.3",
"tool/2.2"
],
"python_requires": [
"mypytool/3.3"
]
}
conan lock add 命令不会对锁文件、包、包是否存在、包版本是否存在或这些包在给定依赖图中的存在性进行任何检查,它只是对 JSON 信息进行基本的操作。当该锁文件应用于解析依赖图时,添加的版本可能不存在,或者无法解析 conanfile.py 配方中定义的版本范围。
此外,版本列表仍然是排序的。将较旧的版本(例如 tool/2.1)添加到之前的锁文件中,如果配方包含版本范围 tool/[>=2.0 <3],则不会自动使用该较旧版本,因为 tool/2.2 版本已列在那里,并且该范围将解析到 tool/2.2,而不是较旧的 tool/2.1。
请注意,使用 conan lock add 创建的锁文件可能不完整,不包含完整依赖图所需的所有必要锁定版本。对于这些情况,请记住可以应用 --lockfile-partial 参数。另请注意,如果当前文件夹中存在 conan.lock 文件,Conan 命令(如 conan install)会自动使用它。请查看 锁文件教程。
如果显式添加修订版本,请注意修订版本是按时间戳排序的。如果锁文件中存在多个修订版本,则必须提供这些修订版本的时间戳,以便排序有意义,这可以通过以下方式完成:
$ conan lock add --requires=pkg/1.1#revision%timestamp
警告
禁止手动操作 Conan 锁文件,更改引用的严格排序,这可能导致任何任意的未定义行为。
请注意,不可能
conan lock add版本范围。版本可能不完整(例如未提供修订版本),但它必须是精确的版本。
注意
最佳实践
在许多情况下,此命令将不是必需的。现有的 conan install、conan create、conan lock、conan export、conan graph 命令可以直接更新或生成新的锁文件,其中包含它们创建的包的新信息,然后可以使用这些新或更新的锁文件继续处理。