MSBuild
The MSBuild
build helper is a wrapper around the command line invocation of MSBuild. It abstracts the calls like msbuild "MyProject.sln" /p:Configuration=<conf> /p:Platform=<platform>
into Python method ones.
This helper can be used like:
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")
The MSBuild.build()
method internally implements a call to msbuild
like:
$ <vcvars-cmd> && msbuild "MyProject.sln" /p:Configuration=<configuration> /p:Platform=<platform>
Where:
<vcvars-cmd>
calls the Visual Studio prompt that matches the current recipesettings
.configuration
, typically Release, Debug, which will be obtained fromsettings.build_type
but this can be customized with thebuild_type
attribute.<platform>
is the architecture, a mapping from thesettings.arch
to the common ‘x86’, ‘x64’, ‘ARM’, ‘ARM64’. This can be customized with theplatform
attribute.
Customization
attributes
You can customize the following attributes in case you need to change them:
build_type (default
settings.build_type
): Value for the/p:Configuration
.platform (default based on
settings.arch
to select one of these values: ('x86', 'x64', 'ARM', 'ARM64'
): Value for the/p:Platform
.
Example:
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
is affected by these [conf]
variables:
tools.build:verbosity
accepts one ofquiet
orverbose
to be passed to theMSBuild.build()
call asmsbuild .... /verbosity:{Quiet,Detailed}
.tools.microsoft.msbuild:max_cpu_count
maximum number of CPUs to be passed to theMSBuild.build()
call asmsbuild .... /m:N
.
Reference
class MSBuild(conanfile)
MSBuild build helper class
Parameters:
conanfile –
< ConanFile object >
The current recipe object. Always useself
.command(sln, targets=None)
Gets the
msbuild
command line. For instance, msbuild “MyProject.sln” /p:Configuration=<conf> /p:Platform=<platform>.Parameters:
sln –
str
name of Visual Studio*.sln
filetargets –
targets
is an optional argument, defaults toNone
, and otherwise it is a list of targets to build
Returns:
str
msbuild command line.
build(sln, targets=None)
Runs the
msbuild
command line obtained fromself.command(sln)
.Parameters:
sln –
str
name of Visual Studio*.sln
filetargets –
targets
is an optional argument, defaults toNone
, and otherwise it is a list of targets to build