MSBuild¶
MSBuild
构建助手是 MSBuild 命令行调用的一个包装器。 它将类似 msbuild "MyProject.sln" /p:Configuration=<conf> /p:Platform=<platform>
的调用抽象为 Python 方法。
这个助手可以像这样使用
from conan import ConanFile
from conan.tools.microsoft import MSBuild
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def build(self):
msbuild = MSBuild(self)
msbuild.build("MyProject.sln")
MSBuild.build()
方法在内部实现对 msbuild
的调用,例如
$ <vcvars-cmd> && msbuild "MyProject.sln" /p:Configuration=<configuration> /p:Platform=<platform>
其中
<vcvars-cmd>
调用与当前 recipesettings
匹配的 Visual Studio 提示符。configuration
,通常是 Release、Debug,它将从settings.build_type
中获得,但可以使用build_type
属性进行自定义。<platform>
是架构,是从settings.arch
到常见的 'x86'、'x64'、'ARM'、'ARM64'、'ARM64EC' 的映射。 可以使用platform
属性进行自定义。
自定义¶
属性¶
如果您需要更改以下属性,您可以自定义它们
build_type (默认
settings.build_type
):/p:Configuration
的值。platform (默认基于
settings.arch
以选择以下值之一: ('x86', 'x64', 'ARM', 'ARM64', 'ARM64EC'
):/p:Platform
的值。
示例
from conan import ConanFile
from conan.tools.microsoft import MSBuild
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def build(self):
msbuild = MSBuild(self)
msbuild.build_type = "MyRelease"
msbuild.platform = "MyPlatform"
msbuild.build("MyProject.sln")
conf¶
MSBuild
受这些 [conf]
变量的影响
tools.build:verbosity
接受quiet
或verbose
之一,以传递给MSBuild.build()
调用,如msbuild .... /verbosity:{Quiet,Detailed}
。tools.microsoft.msbuild:max_cpu_count
要传递给MSBuild.build()
调用的最大 CPU 数量,如msbuild .... /m:N
。 如果max_cpu_count=0
,则它将使用没有参数的/m
,这意味着使用所有可用的 cpu。
参考¶
- class MSBuild(conanfile)¶
MSBuild 构建助手类
- 参数:
conanfile –
< ConanFile object >
当前的 recipe 对象。 始终使用self
。
- command(sln, targets=None)¶
获取
msbuild
命令行。 例如,msbuild.exe "MyProject.sln" -p:Configuration=<conf> -p:Platform=<platform>。- 参数:
sln –
str
Visual Studio*.sln
文件的名称targets –
targets
是一个可选参数,默认为None
,否则它是要构建的目标列表
- 返回值:
str
msbuild 命令行。
- build(sln, targets=None)¶
运行从
self.command(sln)
获取的msbuild
命令行。- 参数:
sln –
str
Visual Studio*.sln
文件的名称targets –
targets
是一个可选参数,默认为None
,否则它是要构建的目标列表