conan.tools.build¶
构建¶
conan.tools.build.build_jobs()¶
- build_jobs(conanfile)¶
返回可用于并行构建的 CPU 数量。如果配置值
tools.build:jobs
存在,则返回该值,否则默认为辅助函数_cpu_count()
。_cpu_count()
读取 cgroup 以检测配置的 CPU 数量。目前,cgroup 有两个可用版本。对于 cgroup v1,如果 cgroup 中的数据无效,则会启用处理器检测。只要未启用处理器检测,
build_jobs()
将安全地返回 1。对于 cgroup v2,如果未设置限制,则使用处理器检测。设置限制时,行为与 cgroup v1 中所述相同。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。- 返回:
int
类型的 job 数量
conan.tools.build.cross_building()¶
- cross_building(conanfile=None, skip_x64_x86=False)¶
检查是否正在交叉构建,比较 build 和 host 设置。如果我们正在交叉构建,则返回
True
。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。skip_x64_x86 – 从 64 位构建到 32 位时(例如 x86_64 到 x86,sparcv9 到 sparc,或 ppc64 到 ppc32),不认为这是交叉构建
- 返回:
如果
tools.build.cross_building:cross_build
存在,则返回其bool
值,否则,如果我们正在交叉构建,则返回True
,否则返回False
。
conan.tools.build.can_run()¶
- can_run(conanfile)¶
验证是否可以在同一架构上运行非原生应用程序。当您的架构可以运行多个目标时,这是一个有用的特性。例如,Mac M1 机器可以运行 armv8 和 x86_64。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。- 返回:
如果
tools.build.cross_building:can_run
存在,则返回其bool
值,否则,如果我们正在交叉构建,则返回False
,否则返回True
。
Cppstd¶
conan.tools.build.check_min_cppstd()¶
- check_min_cppstd(conanfile, cppstd, gnu_extensions=False)¶
检查当前的 cppstd 是否满足所需的最低版本。
如果当前的 cppstd 不满足 cppstd 所需的最低版本,将引发 ConanInvalidConfiguration 异常。
settings.compiler.cppstd 必须已定义,否则将引发 ConanInvalidConfiguration 异常。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cppstd – 所需的最低 cppstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)
conan.tools.build.check_max_cppstd()¶
- check_max_cppstd(conanfile, cppstd, gnu_extensions=False)¶
检查当前的 cppstd 是否满足所需的最大版本。
如果当前的 cppstd 不满足 cppstd 所需的最大版本,将引发 ConanInvalidConfiguration 异常。
settings.compiler.cppstd 必须已定义,否则将引发 ConanInvalidConfiguration 异常。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cppstd – 所需的最大 cppstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)
conan.tools.build.valid_min_cppstd()¶
- valid_min_cppstd(conanfile, cppstd, gnu_extensions=False)¶
验证当前的 cppstd 是否满足所需的最低版本。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cppstd – 所需的最低 cppstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)。此选项仅在 Linux 上有效。
- 返回:
如果当前的 cppstd 匹配所需的 cppstd 版本,则为 True。否则为 False。
conan.tools.build.valid_max_cppstd()¶
- valid_max_cppstd(conanfile, cppstd, gnu_extensions=False)¶
验证当前的 cppstd 是否满足所需的最大版本。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cppstd – 所需的最大 cppstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)。此选项仅在 Linux 上有效。
- 返回:
如果当前的 cppstd 匹配所需的 cppstd 版本,则为 True。否则为 False。
conan.tools.build.default_cppstd()¶
- default_cppstd(conanfile, compiler=None, compiler_version=None)¶
获取针对 “conanfile.settings.compiler” 和 “conanfile settings.compiler_version” 的默认
compiler.cppstd
,如果指定了参数 “compiler” 和 “compiler_version”,则针对这些参数获取默认值。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。compiler – 编译器名称,例如 gcc
compiler_version – 编译器版本,例如 12
- 返回:
指定编译器的默认
compiler.cppstd
conan.tools.build.supported_cppstd()¶
- supported_cppstd(conanfile, compiler=None, compiler_version=None)¶
获取针对 “conanfile.settings.compiler” 和 “conanfile.settings.compiler_version” 支持的
compiler.cppstd
列表,如果指定了参数 “compiler” 和 “compiler_version”,则针对这些参数获取列表。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。compiler – 编译器名称,例如:gcc
compiler_version – 编译器版本,例如:12
- 返回:
支持的
cppstd
值列表。
conan.tools.build.cppstd_flag()¶
- cppstd_flag(conanfile) str ¶
根据
conanfile.settings.compiler
、conanfile.settings.compiler.version
和conanfile.settings.compiler.cppstd
返回特定于 C++ 标准的标志。它还考虑了在
settings.compiler.cppstd
中使用 GNU 扩展的情况,并在编译器标志中体现出来。目前,它支持 GCC、Clang、AppleClang、MSVC、Intel、MCST-LCC。如果 profile 中没有
settings.compiler
或settings.cppstd
,结果将是空字符串。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。- 返回:
str
类型,包含编译器使用的标准 C++ 标志。例如 “-std=c++11”, “/std:c++latest”
cstd¶
警告
此功能为实验性,可能发生破坏性变更。有关更多信息,请参阅 Conan 稳定性 部分。
conan.tools.build.check_min_cstd()¶
- check_min_cstd(conanfile, cstd, gnu_extensions=False)¶
检查当前的 cstd 是否满足所需的最低版本。
如果当前的 cstd 不满足 cstd 所需的最低版本,将引发 ConanInvalidConfiguration 异常。
如果设置了 settings.compiler.cstd,工具将使用 settings.compiler.cstd 进行比较
如果未设置 settings.compiler.cstd,工具将使用 compiler 进行比较(读取 cstd_default 中的默认值)
如果 settings.compiler 未出现(未在 settings 中声明),则会引发异常,因为它无法比较。
如果无法检测 settings.compiler 的默认 cstd,将引发异常。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cstd – 所需的最低 cstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)
conan.tools.build.check_max_cstd()¶
- check_max_cstd(conanfile, cstd, gnu_extensions=False)¶
检查当前的 cstd 是否满足所需的最大版本。
如果当前的 cstd 不满足 cstd 所需的最大版本,将引发 ConanInvalidConfiguration 异常。
如果设置了 settings.compiler.cstd,工具将使用 settings.compiler.cstd 进行比较
如果未设置 settings.compiler.cstd,工具将使用 compiler 进行比较(读取 cstd_default 中的默认值)
如果 settings.compiler 未出现(未在 settings 中声明),则会引发异常,因为它无法比较。
如果无法检测 settings.compiler 的默认 cstd,将引发异常。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cstd – 所需的最大 cstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)
conan.tools.build.valid_min_cstd()¶
- valid_min_cstd(conanfile, cstd, gnu_extensions=False)¶
验证当前的 cstd 是否满足所需的最低版本。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cstd – 所需的最低 cstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)。此选项仅在 Linux 上有效。
- 返回:
如果当前的 cstd 匹配所需的 cstd 版本,则为 True。否则为 False。
conan.tools.build.valid_max_cstd()¶
- valid_max_cstd(conanfile, cstd, gnu_extensions=False)¶
验证当前的 cstd 是否满足所需的最大版本。
- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。cstd – 所需的最大 cstd 版本
gnu_extensions – 是否需要 GNU 扩展(例如 gnu17)。此选项仅在 Linux 上有效。
- 返回:
如果当前的 cstd 匹配所需的 cstd 版本,则为 True。否则为 False。
conan.tools.build.default_cstd()¶
- default_cstd(conanfile, compiler=None, compiler_version=None)¶
获取针对 “conanfile.settings.compiler” 和 “conanfile settings.compiler_version” 的默认
compiler.cstd
,如果指定了参数 “compiler” 和 “compiler_version”,则针对这些参数获取默认值。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。compiler – 编译器名称,例如 gcc
compiler_version – 编译器版本,例如 12
- 返回:
指定编译器的默认
compiler.cstd
conan.tools.build.supported_cstd()¶
- supported_cstd(conanfile, compiler=None, compiler_version=None)¶
获取针对 “conanfile.settings.compiler” 和 “conanfile.settings.compiler_version” 支持的
compiler.cstd
列表,如果指定了参数 “compiler” 和 “compiler_version”,则针对这些参数获取列表。- 参数:
conanfile – 当前 recipe 对象。始终使用
self
。compiler – 编译器名称,例如:gcc
compiler_version – 编译器版本,例如:12
- 返回:
支持的
cstd
值列表。