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 – 当前的配方对象。始终使用
self。- 返回:
一个包含作业数量的
int类型值
conan.tools.build.cross_building()¶
- cross_building(conanfile=None, skip_x64_x86=False)¶
通过比较 *build* 和 *host* 设置来检查是否正在进行交叉构建。如果正在进行交叉构建,则返回
True。- 参数:
conanfile – 当前的配方对象。始终使用
self。skip_x64_x86 – 当从 64 位构建到 32 位时不考虑交叉构建:x86_64 到 x86,sparcv9 到 sparc 或 ppc64 到 ppc32
- 返回:
如果存在
tools.build.cross_building:cross_build,则返回其布尔值,否则,如果正在交叉构建,则返回True,否则返回False。
conan.tools.build.can_run()¶
- can_run(conanfile)¶
验证是否可能在同一架构上运行非原生应用程序。对于您的架构可以运行多个目标的情况,这是一个有用的功能。例如,Mac M1 机器可以运行 armv8 和 x86_64。
- 参数:
conanfile – 当前的配方对象。始终使用
self。- 返回:
如果存在
tools.build.cross_building:can_run,则返回其布尔值,否则,如果正在交叉构建,则返回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 – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
self。cppstd – 所需的最大 cppstd 版本
gnu_extensions – 需要 GNU 扩展(例如 gnu17)
conan.tools.build.valid_min_cppstd()¶
- valid_min_cppstd(conanfile, cppstd, gnu_extensions=False)¶
验证当前的 cppstd 是否符合所需的最低版本。
- 参数:
conanfile – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
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。如果配置文件中没有
settings.compiler或settings.cppstd,结果将是**空字符串**。- 参数:
conanfile – 当前的配方对象。始终使用
self。- 返回:
一个包含编译器使用的标准 C++ 标志的
str类型值。例如:“-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 未定义,则工具将使用编译器进行比较(从 cstd_default 中读取默认值)。
如果未定义 settings.compiler(未在设置中声明),则会抛出异常,因为它无法进行比较。
如果无法检测到 settings.compiler 的默认 cstd,将抛出异常。
- 参数:
conanfile – 当前的配方对象。始终使用
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 未定义,则工具将使用编译器进行比较(从 cstd_default 中读取默认值)。
如果未定义 settings.compiler(未在设置中声明),则会抛出异常,因为它无法进行比较。
如果无法检测到 settings.compiler 的默认 cstd,将抛出异常。
- 参数:
conanfile – 当前的配方对象。始终使用
self。cstd – 所需的最大 cstd 版本
gnu_extensions – 需要 GNU 扩展(例如 gnu17)
conan.tools.build.valid_min_cstd()¶
- valid_min_cstd(conanfile, cstd, gnu_extensions=False)¶
验证当前的 cstd 是否符合所需的最低版本。
- 参数:
conanfile – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
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 – 当前的配方对象。始终使用
self。compiler – 编译器的名称,例如:gcc
compiler_version – 编译器的版本,例如:12
- 返回:
受支持的
cstd值的列表。
编译器¶
conan.tools.build.check_min_compiler_version()¶
警告
此功能是实验性的,可能会发生重大更改。有关更多信息,请参阅 Conan 稳定性 部分。
- check_min_compiler_version(conanfile, compiler_restrictions)¶
(实验性) 检查当前编译器及其版本是否满足最低要求。
- 参数:
conanfile – 当前的配方对象。始终使用
self。compiler_restrictions –
一个元组列表,其中每个元组包含
compiler (str): 编译器的名称(例如,“gcc”、“msvc”)。
min_version (str): 最低必需版本(字符串格式,例如,“14”、“19.0”)。
reason (str): 解释版本要求的字符串。
- 抛出:
ConanException – 如果未定义“compiler”或“compiler.version”设置。
ConanInvalidConfiguration – 如果找到的编译器版本低于该编译器指定的最低版本。
- 示例:
def validate(self): compiler_restrictions = [ ("clang", "14", "requires C++20 coroutines support"), ("gcc", "12", "requires C++20 modules support") ] check_min_compiler_version(self, compiler_restrictions)