conan graph build-order-merge¶
$ conan graph build-order-merge -h
usage: conan graph build-order-merge [-h] [-f FORMAT] [--out-file OUT_FILE]
[-v [{quiet,error,warning,notice,status,,verbose,debug,v,trace,vv}]]
[-cc CORE_CONF] [--file [FILE]]
[--reduce]
Merge more than 1 build-order file.
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json, html
--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
--file [FILE] Files to be merged
--reduce Reduce the build order, output only those to build.
Use this only if the result will not be merged later
with other build-order
正如 conan graph build-order 命令中所述,有两种顺序:recipe 和 configuration。只有相同类型的构建顺序才能合并,否则命令将返回错误。
请注意,只有未经 --reduce 约简的构建顺序才能合并。
合并不同输入文件的结果也可以使用 conan graph build-order-merge --reduce 参数进行约简,其行为与之前相同,只留下需要从源代码构建的元素。
当合并 2 个或更多“build-order”文件时,合并的结果将包含一个 profiles 部分,如下所示:
"profiles": {
"build_order_win": {
"args": "-pr:h=\"profile1\" -s:h=\"os=Windows\" ..."
},
"build_order_nix": {
"args": "-pr:h=\"profile2\" -s:h=\"os=Linux\" ..."
}
}
其中 build_order_win 和 build_order_nix 是用作合并输入的“build-order”文件名,它们将在构建顺序中每个 package 的 filenames 字段中引用。这样,在构建多个配置时,更容易获得构建特定包二进制文件所需的命令行参数。
请注意,当合并的构建顺序包含多个 filenames 时,会发生这种情况:
{
"package_id": "efa83b160a55b033c4ea706ddb980cd708e3ba1b",
"context": "build",
"binary": "Build",
"filenames": [
"build_order_win",
"build_order_nix"
],
"build_args": "--tool-requires=dep/0.1 --build=dep/0.1",
"info": {
"settings": {
"build_type": "Release"
}
}
}
"profiles": {
"build_order_win": {
"args": "-pr:h=\"profile1\" -s:h=\"os=Windows\" ..."
},
"build_order_nix": {
"args": "-pr:h=\"profile2\" -s:h=\"os=Linux\" ..."
}
}
然后,将使用第一个 filename,在本例中是 build_order_win,因为 context 和 build_args 参数与此配置文件信息匹配。其他文件名作为参考,用于指示其他单独的构建顺序文件中是否列出了此 package_id 以供构建。