VirtualRunEnv

VirtualRunEnv 是一个生成器,它生成一个启动器 conanrunenv .bat, .ps1 或 .sh 脚本,其中包含运行时环境变量。

启动器包含运行时环境信息,任何在环境中实际运行已编译的可执行文件和应用程序所必需的信息。 信息从以下位置获得

  • host 上下文相对应的依赖项的 self.runenv_info

  • 也从包的 self.cpp_info 定义中自动推断,以定义 PATH

  • 如果设置了 os 设置,则在非 Windows 主机上类似地推断 LD_LIBRARY_PATHDYLD_LIBRARY_PATHDYLD_FRAMEWORK_PATH

它可以在 conanfile 中按名称使用

conanfile.py
class Pkg(ConanFile):
    generators = "VirtualRunEnv"
conanfile.txt
[generators]
VirtualRunEnv

它也可以在 conanfile generate() 方法中完全实例化

conanfile.py
from conan import ConanFile
from conan.tools.env import VirtualRunEnv

class Pkg(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    requires = "zlib/1.2.11", "bzip2/1.0.8"

    def generate(self):
        ms = VirtualRunEnv(self)
        ms.generate()

生成的文件

  • conanrunenv-release-x86_64.(bat|ps1|sh): 此文件包含环境变量(如 PATH、LD_LIBRARY_PATH 等)的实际定义,以及与 host 上下文相对应的依赖项的 runenv_info 以及当前安装的配置。 如果使用其他设置重复调用,将创建一个不同的文件。

  • conanrun.(bat|ps1|sh): 累积对一个或多个其他脚本的调用,以便为一个文件提供一个方便的文件。 这仅调用最新的特定配置,也就是说,如果首先为 Release 构建类型调用 conan install,然后为 Debug 调用,则 conanrun.(bat|ps1|sh) 脚本将调用 Debug 脚本。

执行这些文件之一后,将生成一个新的停用脚本,捕获当前环境,以便在需要时恢复环境。 该文件也将按照当前活动配置进行命名,例如 deactivate_conanrunenv-release-x86_64.bat

注意

要创建 PowerShell 所需的 .ps1 文件,您需要使用 PowerShell 可执行文件的值设置 tools.env.virtualenv:powershell 配置(例如,powershell.exepwsh)。 请注意,从 Conan 2.11.0 开始,将其设置为 TrueFalse 已被弃用,不应再使用。

注意

可以通过将 --env-generation=false 传递给 conan install 命令来禁用为消费者自动生成这些文件。 此功能是实验性的,可能会发生更改,禁用此文件可能会导致意外的运行时错误。

参考

class VirtualRunEnv(conanfile, auto_generate=False)

计算运行时环境的环境变量,并生成 conanrunenv .bat 或 .sh 脚本

参数:

conanfile – 当前配方对象。 始终使用 self

environment()

返回一个 Environment 对象,其中包含运行上下文的环境变量。

返回值:

一个 Environment 对象实例,其中包含获取的变量。

vars(scope='run')
参数:

scope – 要使用的范围。

返回值:

一个 EnvVars 实例,其中包含计算出的环境变量。

generate(scope='run')

生成启动器脚本,激活运行上下文的变量。

参数:

scope – 要使用的范围。