VirtualRunEnv¶
VirtualRunEnv
是一个生成器,它会生成一个名为 conanrunenv .bat、.ps1 或 .sh 的启动脚本,其中包含运行时环境的变量。
此启动脚本包含运行时环境信息,即在实际运行编译后的可执行文件和应用程序的环境中所需的一切。这些信息从
对应于
host
上下文的依赖项的self.runenv_info
中获取。它还会自动从包的
self.cpp_info
定义中推导出PATH
。在非 Windows 主机上,如果设置了
os
设置,LD_LIBRARY_PATH
、DYLD_LIBRARY_PATH
和DYLD_FRAMEWORK_PATH
也会以类似的方式推导出来。
它可以在conanfile中通过名称使用
class Pkg(ConanFile):
generators = "VirtualRunEnv"
[generators]
VirtualRunEnv
它也可以在 conanfile 的 generate()
方法中完全实例化
from conan import ConanFile
from conan.tools.env import VirtualRunEnv
class Pkg(ConanFile):
settings = "os", "compiler", "arch", "build_type"
requires = "zlib/1.3.1", "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
文件,您需要将 tools.env.virtualenv:powershell
配置设置为 PowerShell 可执行文件的值(例如 powershell.exe
或 pwsh
)。请注意,自 Conan 2.11.0 起,将其设置为 True
或 False
已弃用,不应再使用。
注意
要创建 .env
dotenv 文件,请使用 **实验性**(Conan 2.21 新增)的 tools.env:dotenv
配置。这些文件无意作为脚本激活,而是供 IDE 等工具加载。配置特定的文件(例如 conanrunenv-Release.env
)将被生成,因为 Release 和 Debug 配置的环境可能会有所不同。目前,由于某些 VScode 的限制,这些文件不使用变量插值,会打印一条警告,指向 https://github.com/microsoft/vscode-cpptools/issues/13781 以跟踪进度。请在 Github 上提交工单以报告对此功能的任何反馈。
注意
可以通过向 conan install
命令传递 --env-generation=false
来禁用为使用者自动生成这些文件。 **此功能是实验性的,可能会发生变化**,禁用此文件可能导致意外的运行时错误。
参考¶
- class VirtualRunEnv(conanfile, auto_generate=False)¶
计算运行时环境的变量,并生成一个 conanrunenv .bat 或 .sh 脚本。
- 参数:
conanfile – 当前的配方对象。始终使用
self
。
- environment()¶
返回一个包含运行时环境变量的
Environment
对象。- 返回:
包含已获取变量的
Environment
对象实例。
- vars(scope='run')¶
- 参数:
scope – 要使用的范围。
- 返回:
一个包含计算出的环境变量的
EnvVars
实例。
- generate(scope='run')¶
生成激活运行时上下文变量的启动脚本。
- 参数:
scope – 要使用的范围。