Přehled nástroje MSBuild (Visual C++)
Nástroj MSBuild je standardní systém sestavení pro projekty Visual C++.Při sestavování projektu v integrovaném vývojovém prostředí (IDE) používá Visual Studio nástroj msbuild.exe, soubor projektu založený na jazyce XML a volitelné soubory nastavení.Přestože lze použít soubor msbuild.exe a soubor projektu na příkazovém řádku, rozhraní IDE poskytuje uživatelské rozhraní, abyste mohli snadněji konfigurovat nastavení a sestavit projekt.Tento přehled popisuje, jak aplikace Visual C++ používá systém MSBuild.
Požadavky
Přečtěte si následující dokumenty o MSBuild.
MSBuild
Přehled konceptů MSBuild.Referenční dokumentace nástroje MSBuild
Referenční informace o systému MSBuild.Referenční dokumentace schématu souboru projektu nástroje MSBuild
Uvádí prvky schématu MSBuild XML spolu s jejich atributy a nadřazené a podřízené prvky.Obzvláště zvažte elementy ItemGroup, PropertyGroup, Target a Task.Referenční dokumentace pro použití nástroje MSBuild v příkazovém řádku
Popisuje argumenty příkazového řádku a možnosti, které lze použít s msbuild.exe.Referenční dokumentace úlohy nástroje MSBuild
Popisuje úlohy MSBuild.Obzvláště zvažte tyto prvky, které jsou specifické pro Visual C++: BscMake – úloha, CL – úloha, CPPClean – úloha, LIB – úloha, Úloha odkazu, MIDL – úloha, MT – úloha, RC – úloha, SetEnv – úloha, VCMessage – úloha, XDCMake – úloha, XSD – úloha.
MSBuild na příkazovém řádku
Následující příkaz z dokumentu Referenční dokumentace pro použití nástroje MSBuild v příkazovém řádku ukazuje, že nástroj msbuild.exe použije implicitní nebo explicitní argument project file (soubor .vcxproj pro projekty Visual C++) a nula nebo více options příkazového řádku.
msbuild.exe [project file] [options]
Použijte možnosti příkazového řádku /target (nebo /t) a /property (nebo /p) k přepsání vlastností a cílů, které jsou zadány v souboru projektu.
Základní funkcí souboru projektu je určit cíl, což je určitá operace použitá na projekt a vstupy a výstupy, které jsou nutné k provedení operace.Soubor projektu může určit jeden nebo několik cílů, které mohou zahrnovat výchozí cíl.
Každý cíl se skládá ze sekvencí jedné nebo více úloh.Každá úloha je reprezentována třídou rozhraní .NET Framework, která obsahuje jeden spustitelný příkaz.Například úkol CL obsahuje příkaz cl.exe.
Parametr úkolu je vlastnost úlohy třídy a obvykle představuje možnost příkazového řádku pro spustitelný příkaz.Například parametr FavorSizeOrSpeed úkolu CL odpovídá možnostem kompilátoru /Os a /Ot.
Další parametry úlohy podporují infrastrukturu MSBuild.Například parametr úkolu Sources určuje sadu úkolů, které mohou být spotřebovány dalšími úkoly.Další informace o úlohách MSBuild naleznete v tématu Referenční dokumentace úlohy nástroje MSBuild.
Většina úkolů vyžaduje vstup a výstup, jako je například název souboru, cesta, řetězec, čísla nebo logické parametry.Společný vstup například je název pro kompilaci zdrojového souboru .cpp.Důležitý vstupní parametr je řetězec, který určuje konfiguraci sestavení a platformu, například "Debug|Win32".Vstupy a výstupy jsou určeny jedním nebo více uživatelem definovaných prvcích Item XML obsažených v prvku ItemGroup.
Soubor projektu může také určit uživatelem definované vlastnosti a položkyskupiny definic položky.Vlastnosti a položky tvoří páry název/hodnota, které lze použít jako proměnné v sestavení.Název součásti páru definuje makro a součást hodnoty prohlašuje hodnotu makra.K makru vlastnosti lze přistupovat pomocí zápisu $(name) a k makru položky lze přistupovat pomocí zápisu %(name).
Dalších prvky XML v souboru projektu mohou testovat makra a podmíněně nastavit hodnotu všech maker nebo řídit spuštění sestavení.Názvy maker a řetězce literálů mohou být spojeny ke generování konstrukce, jako je například cesta a název souboru.Do příkazového řádku možnost /property nastaví nebo přepíše vlastnost projektu.Položky nelze odkazovat na příkazovém řádku.
Systém MSBuild může podmíněně spustit cíl před, nebo po jiném cíli.Systém může také sestavit cíl na základě toho, zda jsou soubory, které cíl využívá, novější než soubory, které vydává.
MSBuild v IDE
Při nastavení vlastností projektu v integrovaném vývojovém prostředí a uložení projektu Visual C++ zapíše nastavení projektu do souboru projektu.Soubor projektu obsahuje nastavení, které je jedinečné pro váš projekt, ale neobsahuje všechna nastavení, která jsou nutná k sestavení projektu.Soubor projektu obsahuje prvky Import, které obsahují síť dalších podpůrných souborů. Soubory podpory obsahují zbývající vlastnosti, cíle a nastavení, které jsou nutné pro sestavení projektu.
Většina cílů a vlastnosti v podpůrném souboru existuje výhradně pro implementaci systému sestavení.Následující část popisuje některé užitečné cíle a vlastnosti, které můžete zadat v příkazovém řádku nástroje MSBuild.Chcete-li zjistit další cíle a vlastnosti, prozkoumejte soubory v adresářích souboru podpory.
Podpora adresářů se soubory
Standardně primární podpůrné soubory Visual C++ jsou umístěny v následujících adresářích.
Adresář |
Popis |
---|---|
drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\ |
Obsahuje primární cílové soubory (TARGETS) a soubory vlastností (PROPS), které jsou používány těmito cíly.Ve výchozím nastavení makro $(VCTargetsPath) odkazuje na tento adresář. |
drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\ |
Obsahuje soubory cíle a vlastnosti specifické pro platformu, které přepíší cíle a vlastnosti svého nadřazeného adresáře.Tento adresář obsahuje také soubor .dll, který definuje úlohy, které jsou používány cíli v tomto adresáři. Zástupný text platform představuje podadresář sady nástrojů ARM, Win32 nebo x64. |
drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\PlatformToolsets\toolset\ |
Obsahuje adresáře, které umožňují sestavení generovat aplikace Visual C++ se zadanou sadou nástrojů version. Zástupný text platform představuje podadresář sady nástrojů ARM, Win32 nebo x64.Zástupný symbol toolset představuje podadresář sady nástrojů pro sestavení aplikací Windows, Windows XP nebo Windows Phone. |
drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\PlatformToolsets\toolset\ |
Obsahuje adresáře, které umožňují sestavení generovat aplikace 9.0 nebo Visual C++ 10.0. Zástupný text platform představuje podadresář sady nástrojů Itanium, Win32 nebo x64.Zástupný text toolset představuje podadresář sady nástrojů v90 nebo v100. |
Soubory podpory
Adresáře souboru podpory obsahují soubory s těmito příponami.
Přípona |
Popis |
---|---|
.targets |
Obsahuje elementy XML Target, které určují úkoly, které jsou spouštěny cílem.Může také obsahovat Property Group, Item Group, Item Definition Group a uživatelem definované prvky Item, které slouží k přiřazení souborů a možnosti příkazového řádku pro parametry úlohy. Další informace naleznete v tématu Target – element (MSBuild). |
.props |
Obsahuje Property Group a uživatelem definované elementy XML Property, které určují soubor a nastavení parametru používané během sestavení. Může také obsahovat Item Definition Group a uživatelem definované prvky Item XML, které určují další nastavení.Položky definované ve skupině definice se podobají vlastnostem, ale nejsou přístupné z příkazového řádku.Soubory projektu Visual C++ často používají položky namísto vlastností k vyjádření nastavení. Další informace naleznete v tématu ItemGroup – element (MSBuild)m ItemDefinitionGroup – element (MSBuild) a Item – prvek (MSBuild). |
.xml |
Obsahuje elementy XML, které deklarují a inicializují prvky uživatelského rozhraní IDE, jako jsou seznamy vlastností a stránky vlastností a ovládací prvky textového pole a seznamu. Soubory XML přímo podporují IDE, nikoli MSBuild.Však hodnoty vlastnosti IDE jsou přiřazeny k vlastnostem sestavení a položkám. Většina souborů XML je v podadresáři národního prostředí.Například soubory pro oblast angličtina-USA jsou v $(VCTargetsPath)\1033\. |
Uživatelské cíle a vlastnosti
K co nejefektivnějšímu využití MSBuild na příkazovém řádku pomáhá zjistit, jaké vlastnosti a cíle jsou užitečné a důležité.Většina vlastností a cílů pomáhá implementovat systém sestavení Visual C++ a v důsledku toho nejsou relevantní pro daného uživatele.Tato část popisuje některé vhodné uživatelem orientované vlastnosti a cíle.
Vlastnost PlatformToolset
Vlastnost PlatformToolset určuje, které sady nástrojů Visual C++ se používají v sestavení.Hodnota vlastnosti je zřetězená s literálovými řetězci k vytvoření cesty k adresáři, který obsahuje vlastnost a cílové soubory potřebné k sestavení projektu pro konkrétní platformu.
Nastavte vlastnost PlatformToolset na v110, abyste mohli použít nástroje a knihovny Visual C++ v sadě Visual Studio 2012 pro sestavení aplikace.
msbuild myProject.vcxproj /p:PlatformToolset=v110
Nastavte vlastnost PlatformToolset na v100, abyste mohli použít nástroje a knihovny Visual C++ 2010 pro sestavení aplikace.
msbuild myProject.vcxproj /p:PlatformToolset=v100
Nastavte vlastnost PlatformToolset na v90, abyste mohli použít nástroje a knihovny Visual C++ 2008 pro sestavení aplikace.Sada nástrojů Visual C++ 2008 musí již být nainstalována v počítači, aby byla tato vlastnost efektivní.
msbuild myProject.vcxproj /p:PlatformToolset=v90
Vlastnost PreferredToolArchitecture
Vlastnost PreferredToolArchitecture určuje, zda jsou v sestavení použity 32bitové nebo 64bitové kompilátory a nástroje.Tato vlastnost nemá vliv na výstupní architekturu nebo konfiguraci platformy.Ve výchozím nastavení nástroj MSBuild používá verzi x86 kompilátoru a nástroje, pokud tato vlastnost není nastavena nebo je nastavit na libovolnou hodnotu jinou než x64.
Nastavte vlastnost PreferredToolArchitecture na x64, abyste mohli použít 64bitový kompilátor a nástroje pro sestavení aplikace.
msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64
Vlastnost UseEnv
Standardně nastavení specifické pro platformu pro aktuální projekt přepíšou proměnné prostředí PATH, INCLUDE, LIB, LIBPATH, CONFIGURATION a PLATFORM.Nastavte vlastnost UseEnv na true a ujistěte se tak, že proměnné prostředí nejsou přepsána.
msbuild myProject.vcxproj /p:UseEnv=true
Cíle
Existují stovky cílů v podpůrných souborech jazyka Visual C++.Nejvíce je však cílů orientovaných na systém, které uživatel může ignorovat.Většině cílů systémů předchází podtržítko (_), nebo název, který začíná "PřipravitNa", "Vypočítat", "Před", "Po", "Pre" nebo "Post".
Následující tabulka uvádí několik vhodných cílů zaměřených na uživatele.
Cíl |
Popis |
---|---|
BscMake |
Spustí nástroj Informace o procházení nástroje pro správu Microsoft bscmake.exe. |
Sestavení |
Vytvoří projekt. Toto je výchozí cíl pro projekt. |
ClCompile |
Spustí nástroj kompilátoru Visual C++, cl.exe. |
Vyčistit |
Odstraní dočasné a průběžné zprostředkující soubory sestavení. |
Lib |
Spustí nástroj Správce 32bitové knihovny Microsoft, lib.exe. |
Odkaz |
Spustí nástroj linker Visual C++, link.exe. |
ManifestResourceCompile |
Extrahujte seznam prostředků z manifestu a poté spusťte nástroj Microsoft Windows Resource Compiler, rc.exe. |
Midl |
Spustí nástroj kompilátoru MIDL (Microsoft Interface Definition Language), midl.exe. |
Znovu sestavit |
Čistí a poté sestaví váš projekt. |
ResourceCompile |
Spustí nástroj Microsoft Windows Resource Compiler, rc.exe. |
XdcMake |
Spustí nástroj dokumentace XML, xdcmake.exe. |
Xsd |
Spustí nástroj Definice schématu XML, xsd.exe. |