C++ projeleri için MSBuild iç işlevleri

IDE'de proje özelliklerini ayarladığınızda ve sonra projeyi kaydettiğinizde, Visual Studio proje ayarlarını proje dosyanıza yazar. Proje dosyası, projenize özgü ayarlar içerir. Ancak, projenizi oluşturmak için gereken tüm ayarları içermez. Proje dosyası, ek destek dosyaları ağı içeren öğeler içerirImport. Destek dosyaları, projeyi oluşturmak için gereken kalan özellikleri, hedefleri ve ayarları içerir.

Destek dosyalarındaki hedeflerin ve özelliklerin çoğu yalnızca derleme sistemini uygulamak için mevcuttur. Bu makalede, MSBuild komut satırında belirtebileceğiniz yararlı hedefler ve özellikler ele alınmaktadır. Daha fazla hedefi ve özelliği keşfetmek için destek dosyası dizinlerindeki dosyaları inceleyin.

Destek Dosyası Dizinleri

Varsayılan olarak, birincil Visual Studio destek dosyaları aşağıdaki dizinlerde bulunur. Bu bilgiler sürüme özgüdür.

Visual Studio 2022 ve 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Hedefler tarafından kullanılan birincil hedef dosyaları (.targets) ve özellik dosyalarını (.props) içerir. Varsayılan olarak, $(VCTargetsPath) makro bu dizine başvurur. Yer <version> tutucu Visual Studio sürümüne başvurur: Visual Studio 2022 için v170, Visual Studio 2019 için v160 veya Visual Studio 2017 için v150.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Üst dizinindeki hedefleri ve özellikleri geçersiz kılan platforma özgü hedef ve özellik dosyalarını içerir. Bu dizin, bu dizindeki hedefler tarafından kullanılan görevleri tanımlayan bir DLL de içerir. Yer <platform> tutucu ARM, ARM64, Win32 veya x64 alt dizinini temsil eder.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Derlemenin belirtilen <toolset>kullanarak C++ uygulamaları oluşturmasını sağlayan dizinleri içerir. Yer <platform> tutucu ARM, ARM64, Win32 veya x64 alt dizinini temsil eder. Yer tutucu araç <toolset> takımı alt dizinini temsil eder.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Hedefler tarafından kullanılan birincil hedef dosyaları (.targets) ve özellik dosyalarını (.props) içerir. Varsayılan olarak, $(VCTargetsPath) makro bu dizine başvurur.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Üst dizinindeki hedefleri ve özellikleri geçersiz kılan platforma özgü hedef ve özellik dosyalarını içerir. Bu dizin, bu dizindeki hedefler tarafından kullanılan görevleri tanımlayan bir DLL de içerir. Yer <platform> tutucu ARM, ARM64, Win32 veya x64 alt dizinini temsil eder.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Derlemenin belirtilen <toolset>kullanarak C++ uygulamaları oluşturmasını sağlayan dizinleri içerir. Yer <platform> tutucu ARM, Win32 veya x64 alt dizinini temsil eder. Yer tutucu araç <toolset> takımı alt dizinini temsil eder.

Visual Studio 2015 ve öncesi

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Hedefler tarafından kullanılan birincil hedef dosyaları (.targets) ve özellik dosyalarını (.props) içerir. Varsayılan olarak, $(VCTargetsPath) makro bu dizine başvurur.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Üst dizinindeki hedefleri ve özellikleri geçersiz kılan platforma özgü hedef ve özellik dosyalarını içerir. Bu dizin, bu dizindeki hedefler tarafından kullanılan görevleri tanımlayan bir DLL de içerir. Yer <platform> tutucu ARM, Win32 veya x64 alt dizinini temsil eder.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Derlemenin belirtilen <toolset>kullanarak C++ uygulamaları oluşturmasını sağlayan dizinleri içerir. Yer <version> tutucu, Visual Studio 2012 için V110, Visual Studio 2013 için V120 ve Visual Studio 2015 için V140'tır. Yer <platform> tutucu ARM, Win32 veya x64 alt dizinini temsil eder. Yer tutucu araç <toolset> takımı alt dizinini temsil eder. Örneğin, Visual Studio 2015 araç takımını kullanarak Windows uygulamaları oluşturmak için v140'tır. Veya Visual Studio 2013 araç takımını kullanarak Windows XP için derlemeye v120_xp.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Derlemenin Visual Studio 2008 veya Visual Studio 2010 uygulamaları oluşturmasını sağlayan yollar içermez <version>. Bu sürümlerde yer <platform> tutucu Itanium, Win32 veya x64 alt dizinini temsil eder. Yer tutucusu <toolset> v90 veya v100 araç kümesi alt dizinini temsil eder.

Destek Dosyaları

Destek dosyası dizinleri şu uzantılara sahip dosyaları içerir:

Dahili Tanım
.targets Hedef tarafından yürütülen görevleri belirten XML öğelerini içerir Target . Görev parametrelerine dosya ve komut satırı seçenekleri atamak için kullanılan , , ve kullanıcı tanımlı Item öğeler de içerebilirPropertyGroup. ItemDefinitionGroupItemGroup

Daha fazla bilgi için bkz Target . Öğe (MSBuild).
.props Derleme sırasında kullanılan dosya ve parametre ayarlarını belirten ve kullanıcı tanımlı Property XML öğelerini içerirProperty Group.

Ayrıca ek ayarlar belirten ve kullanıcı tanımlı Item XML öğeleri de içerebilirItemDefinitionGroup. Öğe tanımı grubunda tanımlanan öğeler özelliklere benzer, ancak komut satırından erişilemiyor. Visual Studio proje dosyaları genellikle ayarları göstermek için özellikler yerine öğeleri kullanır.

Daha fazla bilgi için bkzItemGroup. Öğe (MSBuild),ItemDefinitionGroupÖğe (MSBuild)veItemÖğesi (MSBuild).
.xml IDE kullanıcı arabirimi öğelerini bildiren ve başlatan XML öğelerini içerir. Örneğin, özellik sayfaları, özellik sayfaları, metin kutusu denetimleri ve liste kutusu denetimleri.

Dosyalar .xml MSBuild'i değil doğrudan IDE'yi destekler. Ancak, IDE özelliklerinin değerleri derleme özelliklerine ve öğelerine atanır.

Dosyaların çoğu .xml yerel ayara özgü bir alt dizindedir. Örneğin, İngilizce-ABD bölgesi dosyaları içindedir $(VCTargetsPath)\1033\.

Kullanıcı hedefleri ve özellikleri

MSBuild'i etkili bir şekilde kullanmak için, hangi özelliklerin ve hedeflerin yararlı ve ilgili olduğunu bilmenize yardımcı olur. Özelliklerin ve hedeflerin çoğu Visual Studio derleme sisteminin uygulanmasına yardımcı olur ve kullanıcıyla ilgili değildir. Bu bölümde, kullanıcı odaklı özellikler ve bilinmeye değer hedefler açıklanmaktadır.

PlatformToolset Özellik

özelliği, PlatformToolset derlemede hangi MSVC araç takımının kullanıldığını belirler. Varsayılan olarak, geçerli araç takımı kullanılır. Bu özellik ayarlandığında, değeri yolu oluşturmak için değişmez dizelerle birleştirilir. Belirli bir platform için proje oluşturmak için gereken özellik ve hedef dosyaları içeren dizindir. Platform araç takımının bu platform araç takımı sürümü kullanılarak derlenebilmesi için yüklenmesi gerekir.

Örneğin, uygulamanızı derlemek v140 için özelliğini Visual Studio 2015 araçlarını ve kitaplıklarını kullanacak şekilde ayarlayınPlatformToolset:

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture Özellik

özelliği, PreferredToolArchitecture derlemede 32 bit veya 64 bit derleyici ve araçların kullanılıp kullanılmadığını belirler. Bu özellik çıkış platformu mimarisini veya yapılandırmasını etkilemez. Varsayılan olarak, bu özellik ayarlı değilse MSBuild derleyici ve araçların x86 sürümünü kullanır.

Örneğin, uygulamanızı derlemek x64 için 64 bit derleyici ve araçları kullanmak için özelliğini olarak ayarlayınPreferredToolArchitecture:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv Özellik

Varsayılan olarak, geçerli projenin platforma özgü ayarları , , , LIB, , CONFIGURATIONve PLATFORM ortam değişkenlerini geçersiz kılarPATH. LIBPATHINCLUDE UseEnv Ortam değişkenlerinin geçersiz kılınmamasını sağlamak için özelliğini true olarak ayarlayın.

msbuild myProject.vcxproj /p:UseEnv=true

Hedefler

Visual Studio destek dosyalarında yüzlerce hedef vardır. Ancak, çoğu kullanıcının yoksayabileceği sistem odaklı hedeflerdir. Sistem hedeflerinin çoğuna bir alt çizgi ()_ eklenmiştir veya , , Compute, BeforeAfter, Preveya Postile PrepareForbaşlayan bir ada sahiptir.

Aşağıdaki tabloda birkaç kullanışlı kullanıcı odaklı hedef listelenmiştir.

Hedef Tanım
BscMake Microsoft Gözatma Bilgileri Bakım Yardımcı Programı aracını bscmake.exeyürütür.
Build Projeyi oluşturur.

Bu hedef, bir proje için varsayılandır.
ClCompile MSVC derleyici aracını cl.exeyürütür.
Clean Geçici ve ara derleme dosyalarını siler.
Lib Microsoft 32 Bit Kitaplık Yöneticisi aracını lib.exeyürütür.
Link MSVC bağlayıcı aracını link.exeyürütür.
ManifestResourceCompile Bir bildirimdeki kaynakların listesini ayıklar ve ardından Microsoft Windows Kaynak Derleyicisi aracını rc.exeyürütür.
Midl Microsoft Arabirim Tanım Dili (MIDL) derleyici aracını midl.exeyürütür.
Rebuild Projenizi temizler ve sonra oluşturur.
ResourceCompile Microsoft Windows Kaynak Derleyicisi aracını rc.exeyürütür.
XdcMake XML Belgeleri aracını xdcmake.exeyürütür.
Xsd XML Şema Tanımı aracını xsd.exeyürütür. Nota bakın.

Dekont

Visual Studio 2017 ve sonraki sürümlerde dosyalar için .xsd C++ proje desteği kullanım dışıdır. GaC'ye el ile ekleyerek CppCodeProvider.dll kullanmaya Microsoft.VisualC.CppCodeProvider devam edebilirsiniz.

Ayrıca bkz.

MSBuild görev başvurusu
BscMake Görev
CL Görev
CPPClean Görev
LIB Görev
Link Görev
MIDL Görev
MT Görev
RC Görev
SetEnv Görev
VCMessage Görev
XDCMake Görev