Bagikan melalui


Internal MSBuild untuk proyek C++

Saat Anda mengatur properti proyek di IDE lalu menyimpan proyek, Visual Studio menulis pengaturan proyek ke file proyek Anda. File proyek berisi pengaturan yang unik untuk proyek Anda. Namun, ini tidak berisi semua pengaturan yang diperlukan untuk membangun proyek Anda. File proyek berisi Import elemen yang menyertakan jaringan file dukungan tambahan . File dukungan berisi properti, target, dan pengaturan yang tersisa yang diperlukan untuk membangun proyek.

Sebagian besar target dan properti dalam file dukungan hanya ada untuk mengimplementasikan sistem build. Artikel ini membahas target dan properti yang berguna yang dapat Anda tentukan pada baris perintah MSBuild. Untuk menemukan lebih banyak target dan properti, jelajahi file di direktori file dukungan.

Mendukung Direktori File

Secara default, file dukungan Visual Studio utama terletak di direktori berikut. Informasi ini khusus versi.

Visual Studio 2022 dan 2019

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

    Berisi file target utama (.targets) dan file properti (.props) yang digunakan oleh target. Secara default, makro mereferensikan $(VCTargetsPath) direktori ini. Tempat <version> penampung mengacu pada versi Visual Studio: v170 untuk Visual Studio 2022, v160 untuk Visual Studio 2019, atau v150 untuk Visual Studio 2017.

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

    Berisi file target dan properti khusus platform yang menimpa target dan properti di direktori induknya. Direktori ini juga berisi DLL yang menentukan tugas yang digunakan oleh target dalam direktori ini. Tempat <platform> penampung mewakili subdirektori ARM, ARM64, Win32, atau x64.

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

    Berisi direktori yang memungkinkan build untuk menghasilkan aplikasi C++ dengan menggunakan <toolset>. Tempat <platform> penampung mewakili subdirektori ARM, ARM64, Win32, atau x64. Tempat <toolset> penampung mewakili subdirektori toolset.

Visual Studio 2017

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

    Berisi file target utama (.targets) dan file properti (.props) yang digunakan oleh target. Secara default, makro mereferensikan $(VCTargetsPath) direktori ini.

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

    Berisi file target dan properti khusus platform yang menimpa target dan properti di direktori induknya. Direktori ini juga berisi DLL yang menentukan tugas yang digunakan oleh target dalam direktori ini. Tempat <platform> penampung mewakili subdirektori ARM, ARM64, Win32, atau x64.

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

    Berisi direktori yang memungkinkan build untuk menghasilkan aplikasi C++ dengan menggunakan <toolset>. Tempat <platform> penampung mewakili subdirektori ARM, Win32, atau x64. Tempat <toolset> penampung mewakili subdirektori toolset.

Visual Studio 2015 dan yang lebih lama

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

    Berisi file target utama (.targets) dan file properti (.props) yang digunakan oleh target. Secara default, makro $(VCTargetsPath) mereferensikan direktori ini.

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

    Berisi file target dan properti khusus platform yang menimpa target dan properti di direktori induknya. Direktori ini juga berisi DLL yang menentukan tugas yang digunakan oleh target dalam direktori ini. Tempat <platform> penampung mewakili subdirektori ARM, Win32, atau x64.

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

    Berisi direktori yang memungkinkan build untuk menghasilkan aplikasi C++ dengan menggunakan <toolset>. Tempat <version> penampungnya adalah V110 untuk Visual Studio 2012, V120 untuk Visual Studio 2013, dan V140 untuk Visual Studio 2015. Tempat <platform> penampung mewakili subdirektori ARM, Win32, atau x64. Tempat <toolset> penampung mewakili subdirektori toolset. Misalnya, v140 untuk membangun aplikasi Windows dengan menggunakan toolset Visual Studio 2015. Atau, v120_xp untuk membangun Windows XP menggunakan toolset Visual Studio 2013.

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

    Jalur yang memungkinkan build untuk menghasilkan aplikasi Visual Studio 2008 atau Visual Studio 2010 tidak menyertakan <version>. Dalam versi tersebut <platform> , tempat penampung mewakili subdirektori Itanium, Win32, atau x64. Tempat <toolset> penampung mewakili subdirektori toolset v90 atau v100.

File Dukungan

Direktori file dukungan berisi file dengan ekstensi ini:

Ekstensi Deskripsi
.targets Berisi Target elemen XML yang menentukan tugas yang dijalankan oleh target. Mungkin juga berisi PropertyGroupelemen , ItemGroup, ItemDefinitionGroup, dan yang ditentukan Item pengguna yang digunakan untuk menetapkan file dan opsi baris perintah ke parameter tugas.

Untuk informasi selengkapnya, lihat Target Elemen (MSBuild).
.props Berisi Property Group dan elemen XML yang ditentukan Property pengguna yang menentukan pengaturan file dan parameter yang digunakan selama build.

Mungkin juga berisi ItemDefinitionGroup dan elemen XML yang ditentukan Item pengguna yang menentukan pengaturan tambahan. Item yang ditentukan dalam grup definisi item menyerupai properti, tetapi tidak dapat diakses dari baris perintah. File proyek Visual Studio sering menggunakan item alih-alih properti untuk mewakili pengaturan.

Untuk informasi selengkapnya, lihat Elemen (MSBuild),ItemDefinitionGroup Elemen (MSBuild), dan Item Element (MSBuild).ItemGroup
.xml Berisi elemen XML yang mendeklarasikan dan menginisialisasi elemen antarmuka pengguna IDE. Misalnya, lembar properti, halaman properti, kontrol kotak teks, dan kontrol kotak daftar.

File secara .xml langsung mendukung IDE, bukan MSBuild. Namun, nilai properti IDE ditetapkan untuk membangun properti dan item.

Sebagian besar .xml file berada dalam subdirektori khusus lokal. Misalnya, file untuk wilayah Inggris-AS berada di $(VCTargetsPath)\1033\.

Target dan properti pengguna

Untuk menggunakan MSBuild secara efektif, ini membantu mengetahui properti dan target mana yang berguna dan relevan. Sebagian besar properti dan target membantu mengimplementasikan sistem build Visual Studio, dan tidak relevan dengan pengguna. Bagian ini menjelaskan properti dan target berorientasi pengguna yang layak diketahui.

Properti PlatformToolset

Properti PlatformToolset menentukan toolset MSVC mana yang digunakan dalam build. Secara default, toolset saat ini digunakan. Ketika properti ini diatur, nilainya digabungkan dengan string harfiah untuk membentuk jalur. Ini adalah direktori yang berisi file properti dan target yang diperlukan untuk membangun proyek untuk platform tertentu. Toolset platform harus diinstal untuk dibangun dengan menggunakan versi toolset platform tersebut.

Misalnya, atur PlatformToolset properti ke v140 untuk menggunakan alat dan pustaka Visual Studio 2015 untuk membangun aplikasi Anda:

msbuild myProject.vcxproj /p:PlatformToolset=v140

Properti PreferredToolArchitecture

Properti PreferredToolArchitecture menentukan apakah kompilator dan alat 32-bit atau 64-bit digunakan dalam build. Properti ini tidak memengaruhi arsitektur atau konfigurasi platform output. Secara default, MSBuild menggunakan versi x86 dari pengkompilasi dan alat jika properti ini tidak diatur.

Misalnya, atur PreferredToolArchitecture properti ke untuk x64 menggunakan kompilator dan alat 64-bit untuk membangun aplikasi Anda:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Properti UseEnv

Secara default, pengaturan khusus platform untuk proyek saat ini mengambil PATHalih variabel lingkungan , , INCLUDE, LIBLIBPATH, CONFIGURATIONdan PLATFORM . Atur UseEnv properti ke true untuk menjamin bahwa variabel lingkungan tidak ditimpa.

msbuild myProject.vcxproj /p:UseEnv=true

Target

Ada ratusan target di file dukungan Visual Studio. Namun, sebagian besar adalah target berorientasi sistem yang dapat diabaikan pengguna. Sebagian besar target sistem diawali oleh garis bawah (_), atau memiliki nama yang dimulai dengan PrepareFor, , Compute, BeforeAfter, Pre, atau Post.

Tabel berikut ini mencantumkan beberapa target berorientasi pengguna yang berguna.

Target Deskripsi
BscMake Menjalankan alat Utilitas Pemeliharaan Informasi Penjelajahan Microsoft, bscmake.exe.
Build Membangun proyek.

Target ini adalah default untuk proyek.
ClCompile Menjalankan alat kompilator MSVC, cl.exe.
Clean Menghapus file build sementara dan menengah.
Lib Menjalankan alat Microsoft 32-Bit Library Manager, lib.exe.
Link Menjalankan alat penghubung MSVC, link.exe.
ManifestResourceCompile Mengekstrak daftar sumber daya dari manifes lalu menjalankan alat Microsoft Windows Resource Compiler, rc.exe.
Midl Menjalankan alat pengkompilasi Microsoft Interface Definition Language (MIDL), midl.exe.
Rebuild Membersihkan dan kemudian membangun proyek Anda.
ResourceCompile Menjalankan alat Microsoft Windows Resource Compiler, rc.exe.
XdcMake Menjalankan alat Dokumentasi XML, xdcmake.exe.
Xsd Menjalankan alat Definisi Skema XML, xsd.exe. Lihat catatan.

Catatan

Di Visual Studio 2017 dan yang lebih baru, dukungan proyek C++ untuk .xsd file tidak digunakan lagi. Anda masih dapat menggunakan Microsoft.VisualC.CppCodeProvider dengan menambahkan CppCodeProvider.dll secara manual ke GAC.

Lihat juga

Referensi tugas MSBuild
BscMake tugas
CL tugas
CPPClean tugas
LIB tugas
Link tugas
MIDL tugas
MT tugas
RC tugas
SetEnv tugas
VCMessage tugas
XDCMake tugas