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>调用与当前配方settings匹配的 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中的一个,以作为/verbosity:{Quiet,Detailed}传递给MSBuild.build()调用。tools.microsoft.msbuild:max_cpu_count要传递给MSBuild.build()调用作为msbuild .... /m:N的最大 CPU 数量。如果max_cpu_count=0,则使用不带参数的/m,这意味着使用所有可用 CPU。
参考¶
- class MSBuild(conanfile)¶
MSBuild 构建辅助类
- 参数:
conanfile –
< ConanFile 对象 >当前配方对象。始终使用self。
- command(sln, targets=None)¶
获取
msbuild命令行。例如,msbuild.exe "MyProject.sln" -p:Configuration=<conf> -p:Platform=<platform>。- 参数:
sln – Visual Studio
*.sln文件的str名称。targets –
targets是一个可选参数,默认为None,否则是一个要构建的目标列表。
- 返回:
strmsbuild 命令行。
- build(sln, targets=None)¶
运行从
self.command(sln)获取的msbuild命令行。- 参数:
sln – Visual Studio
*.sln文件的str名称。targets –
targets是一个可选参数,默认为None,否则是一个要构建的目标列表。