CMakePresets.json
dan CMakeUserPresets.json
peta vendor Microsoft
CMake mendukung dua file, CMakePresets.json
dan CMakeUserPresets.json
, yang memungkinkan pengguna menentukan opsi konfigurasi, build, dan pengujian umum dan membagikannya dengan orang lain.
CMakePresets.json
dan CMakeUserPresets.json
dapat digunakan untuk mendorong CMake di Visual Studio, di Visual Studio Code, dalam alur Integrasi Berkelanjutan (CI), dan dari baris perintah.
CMakePresets.json
dimaksudkan untuk menyimpan build di seluruh proyek, dan CMakeUserPresets.json
ditujukan bagi pengembang untuk menyimpan build lokal mereka sendiri. Skema untuk kedua file identik.
CMakePresets.json
dan CMakeUserPresets.json
mendukung peta vendor untuk menyimpan informasi khusus vendor. Microsoft mempertahankan dua peta vendor dengan opsi khusus untuk Visual Studio dan Visual Studio Code. Di sini kami mendokumenkan dua peta vendor Microsoft dan makro vendor. Untuk informasi selengkapnya tentang sisa skema, lihat dokumentasi CMake resmi. Ini termasuk informasi tentang Mengonfigurasi Preset, Build Presets, dan Test Presets.
Untuk informasi selengkapnya tentang cara menggunakan CMakePresets.json
di Visual Studio, lihat Mengonfigurasi dan membangun dengan CMake Presets di Visual Studio
Untuk informasi selengkapnya tentang cara menggunakan CMakePresets.json
di Visual Studio Code, lihat Mengonfigurasi dan membangun dengan CMake Presets di VISUAL Code
Peta vendor Pengaturan Visual Studio
Satu peta vendor dengan URI microsoft.com/VisualStudioSettings/CMake/<version>
vendor diizinkan per Mengonfigurasi Preset dan berisi opsi khusus untuk integrasi CMake di Visual Studio dan Visual Studio Code. Semua opsi dalam peta vendor berlaku untuk Visual Studio. Opsi yang berlaku untuk Visual Studio dan Visual Studio Code telah ditandai secara eksplisit.
Semua pengaturan di peta vendor Pengaturan Visual Studio bersifat opsional dan diwarisi dari Konfigurasi Preset yang ditentukan oleh kunci inherits
. Hanya opsi yang telah dimodifikasi yang ditulis ke file. Peta vendor Pengaturan Visual Studio didukung oleh CMakePresets.json
dan CMakeUserPresets.json
.
Opsi dalam peta vendor Pengaturan Visual Studio tidak memengaruhi konstruksi baris perintah CMake atau CTest. Ini sehingga file yang sama CMakePresets.json
dapat digunakan untuk mendorong CMake dengan Visual Studio, Visual Studio Code, dan dari baris perintah. Pengecualian adalah cacheRoot
opsi dan cmakeGenerateCommand
. Opsi ini khusus untuk skenario Buka Cache yang Ada di Visual Studio dan tidak dapat direprovisi dari baris perintah.
Pengaturan | Deskripsi |
---|---|
hostOS |
Array sistem operasi (OS) yang didukung. Nilai yang diterima adalah Windows , Linux , dan macOS .Nilai hostOS digunakan oleh Visual Studio dan Visual Studio Code untuk menyembunyikan Konfigurasi Preset yang tidak berlaku untuk OS sistem target dan memberikan pengalaman pengguna yang lebih baik.Jika hostOS tidak ditentukan, maka Visual Studio dan Visual Studio Code akan selalu menampilkan semua Preset Konfigurasi untuk pilihan. Bidang ini juga dapat berupa string, yang setara dengan array yang berisi satu stringOpsi ini didukung oleh Visual Studio dan Visual Studio Code. |
intelliSenseMode |
Menentukan mode yang digunakan untuk menghitung informasi IntelliSense di Visual Studio dengan format <target>-<toolset>-<arch> . Nilai yang diterima: android-clang-arm android-clang-arm64 android-clang-x6 android-clang-x86 ios-clang-ar ios-clang-arm64 ios-clang-x6 ios-clang-x86 linux-gcc-arm linux-gcc-x64 linux-gcc-x86 windows-clang-arm windows-clang-arm64 windows-clang-x64 windows-clang-x86 windows-msvc-arm windows-msvc-arm64 windows-msvc-x64 windows-msvc-x86 Jika intelliSenseMode tidak ditentukan, Visual Studio menggunakan mode IntelliSense yang cocok dengan kompilator dan arsitektur target yang Anda tentukan. intelliSenseMode sering digunakan untuk menyediakan IntelliSense yang ditingkatkan untuk kompilasi silang.Di Visual Studio 2019, Anda harus secara eksplisit menentukan mode IntelliSense clang saat membangun dengan clang atau clang-cl. |
intelliSenseOptions |
Peta opsi konfigurasi IntelliSense tambahan.useCompilerDefaults : Yang bool menentukan apakah akan menggunakan default kompilator menentukan dan menyertakan jalur untuk IntelliSense. Seharusnya hanya false jika pengkompilasi yang digunakan tidak mendukung argumen gaya gcc. Default ke true .additionalCompilerArgs : Array opsi tambahan untuk mengontrol IntelliSense di Visual Studio. Opsi ini mendukung ekspansi makro. |
enableMicrosoftCodeAnalysis |
bool Yang memungkinkan analisis kode Microsoft di Visual Studio saat membangun dengan cl atau clang-cl . Default ke false . |
codeAnalysisRuleset |
Menentukan aturan yang akan digunakan saat menjalankan analisis kode Microsoft di Visual Studio. Anda dapat menggunakan jalur ke file ruleset, atau nama file ruleset yang diinstal dengan Visual Studio. Opsi ini mendukung ekspansi makro. |
disableExternalAnalysis |
bool Yang menentukan apakah analisis kode harus berjalan pada header eksternal di Visual Studio. |
codeAnalysisExternalRuleset |
Menentukan set aturan yang akan digunakan saat menjalankan analisis kode Microsoft pada header eksternal di Visual Studio. Anda dapat menggunakan jalur ke file ruleset, atau nama file ruleset yang diinstal dengan Visual Studio. Opsi ini mendukung ekspansi makro. |
enableClangTidyCodeAnalysis |
Bool yang memungkinkan analisis kode clang-rapi di Visual Studio saat membangun dengan clang-cl . Default ke false . |
clangTidyChecks |
Daftar peringatan yang dipisahkan koma diteruskan ke clang-rapi saat menjalankan analisis kode clang-rapi di Visual Studio. Kartubebas diperbolehkan, dan awalan - akan menghapus pemeriksaan. |
cacheRoot |
Menentukan jalur ke cache CMake. Direktori ini harus berisi file yang ada CMakeCache.txt . Kunci ini hanya didukung oleh skenario Buka Cache yang Ada di Visual Studio. Opsi ini mendukung ekspansi makro. |
cmakeGenerateCommand |
Alat baris perintah (ditentukan sebagai program baris perintah dan argumen, misalnya, gencache.bat debug ) untuk menghasilkan cache CMake. Perintah ini berjalan di shell menggunakan lingkungan preset yang ditentukan saat konfigurasi CMake dipanggil. Kunci ini hanya didukung oleh skenario Buka Cache yang Ada di Visual Studio. Opsi ini mendukung ekspansi makro. |
Peta vendor Pengaturan Jarak Jauh Visual Studio
Satu peta vendor dengan URI microsoft.com/VisualStudioRemoteSettings/CMake/<version>
vendor diizinkan per Mengonfigurasi Preset dan berisi opsi khusus untuk pengembangan jarak jauh di Visual Studio. Pengembangan jarak jauh berarti Anda memanggil CMake pada koneksi SSH jarak jauh atau WSL. Tidak ada opsi di peta vendor Pengaturan Jarak Jauh Visual Studio yang berlaku untuk Visual Studio Code.
Semua pengaturan di peta vendor Pengaturan Jarak Jauh Visual Studio bersifat opsional dan diwarisi dari Konfigurasi Preset yang ditentukan oleh inherits
kunci. Hanya opsi yang telah dimodifikasi yang ditulis ke file. Peta vendor Pengaturan Jarak Jauh Visual Studio didukung oleh CMakePresets.json
dan CMakeUserPresets.json
.
Opsi dalam peta vendor Pengaturan Visual Studio tidak memengaruhi konstruksi baris perintah CMake atau CTest. Ini sehingga file yang sama CMakePresets.json
dapat digunakan untuk mendorong CMake dengan Visual Studio, Visual Studio Code, dan dari baris perintah.
Banyak opsi di peta vendor Pengaturan Jarak Jauh Visual Studio diabaikan saat menargetkan WSL1. Ini karena toolset WSL1 menjalankan semua perintah secara lokal dan bergantung pada drive Windows yang dipasang di bawah /mnt
folder untuk mengakses file sumber lokal dari WSL1. Tidak diperlukan salinan file sumber. Opsi yang diabaikan saat menargetkan WSL1 telah ditandai secara eksplisit.
Pengaturan | Deskripsi |
---|---|
sourceDir |
Jalur ke direktori pada sistem jarak jauh tempat proyek akan disalin. Default ke $env{HOME}/.vs/$ms{projectDirName} . Opsi ini mendukung ekspansi makro.Dalam skenario salinan jarak jauh, makro ${sourceDir} mengevaluasi ke direktori sumber proyek pada sistem jarak jauh dan bukan direktori sumber proyek pada komputer Windows. Skenario salinan jarak jauh termasuk menargetkan koneksi SSH jarak jauh. Dalam kasus ini, direktori sumber proyek pada sistem jarak jauh ditentukan oleh nilai sourceDir dalam peta vendor Pengaturan Jarak Jauh Visual Studio. Opsi ini diabaikan saat menargetkan WSL1. |
copySources |
Jika true , Visual Studio akan menyalin sumber dari Windows ke sistem jarak jauh. Atur ke false jika Anda mengelola sinkronisasi file sendiri. Default ke true . Opsi ini diabaikan saat menargetkan WSL1. |
copySourcesOptions |
Objek opsi yang terkait dengan salinan sumber dari Windows ke sistem jarak jauh. Objek ini diabaikan ketika menargetkan WSL1.copySourcesOptions.exclusionList : Daftar jalur yang akan dikecualikan saat menyalin file sumber ke sistem jarak jauh. Jalur dapat berupa nama file atau direktori, atau jalur relatif dari akar salinan. Default ke [ ".vs", ".git", "out" ] . Opsi ini mendukung ekspansi makro.copySourcesOptions.method : Metode yang digunakan untuk menyalin file sumber ke sistem jarak jauh. Nilai yang diterima adalah rsync dan sftp . Default ke rsync .copySourcesOptions.concurrentCopies : Jumlah salinan bersamaan yang digunakan selama sinkronisasi sumber ke sistem jarak jauh. Default ke 5 .copySourcesOptions.outputVerbosity : Tingkat verbositas operasi salinan sumber ke sistem jarak jauh. Tingkat yang diterima adalah Normal , Verbose , dan Diagnostic . Default ke Normal . |
rsyncCommandArgs |
Daftar argumen baris perintah diteruskan ke rsync . Default ke [ "-t", "--delete", "--delete-excluded" ] . Opsi ini mendukung ekspansi makro dan diabaikan saat menargetkan WSL1. |
copyBuildOutput |
Menentukan apakah akan menyalin output build dari sistem jarak jauh kembali ke Windows. Default ke false . Opsi ini diabaikan saat menargetkan WSL1. |
copyOptimizations |
Objek opsi yang terkait dengan pengoptimalan salinan sumber. Opsi ini diabaikan saat menargetkan WSL1.copyOptimizations.maxSmallChange : Jumlah maksimum file yang akan disalin menggunakan sftp alih-alih rsync. Default ke 10.copyOptimizations.useOptimizations : Menentukan pengoptimalan salinan yang digunakan. Nilai yang diterima tidak ada pengoptimalan salinan (None ), pengoptimalan rsync saja (RsyncOnly ), atau pengoptimalan rsync dan sftp (RsyncAndSftp ). Default ke RsyncAndSftp .copyOptimizations.rsyncSingleDirectoryCommandArgs : Daftar argumen baris perintah yang diteruskan ke rsync saat menyalin konten direktori tunggal ke sistem jarak jauh. Default ke [ "-t", "-d" ] . Opsi ini mendukung ekspansi makro. |
copyAdditionalIncludeDirectoriesList |
Daftar jalur ke direktori header jarak jauh yang akan disalin secara lokal untuk IntelliSense. Opsi ini mendukung ekspansi makro. |
copyExcludeDirectoriesList |
Daftar jalur ke direktori header jarak jauh yang tidak akan disalin secara lokal untuk IntelliSense. Opsi ini mendukung ekspansi makro. |
forceWSL1Toolset |
Jika true , Visual Studio akan selalu menggunakan toolset WSL1 saat menargetkan WSL dari Visual Studio. Toolset WSL1 menjalankan semua perintah secara lokal dan bergantung pada drive Windows yang dipasang di bawah /mnt folder untuk mengakses file sumber lokal dari WSL. Opsi ini mungkin lebih lambat dengan WSL2. Default ke false .Toolset WSL1 akan selalu digunakan di Visual Studio 2019 versi 16.10. Opsi ini akan relevan setelah dukungan asli untuk WSL2 tersedia. |
Peristiwa pra-build dan pasca-build jarak jauh
Opsi untuk remotePrebuildEvent
dan remotePostbuildEvent
telah ditolak dengan adopsi CMakePresets.json
.
Enkode peristiwa pra-build, pra-tautan, dan pasca-build di Anda CMakeLists.txt
menggunakan add_custom_command
. Ini memastikan perilaku yang sama saat membangun dengan Visual Studio dan dari baris perintah.
Jika Anda memerlukan perilaku yang khusus untuk Visual Studio, Anda dapat menambahkan tugas jarak jauh kustom di tasks.vs.json
. Untuk memulai, klik kanan pada akar CMakeLists.txt
Anda di Penjelajah Solusi dari Tampilan Folder dan pilih Konfigurasikan Tugas. Anda kemudian dapat menambahkan tugas jarak jauh baru ke file Anda tasks.vs.json
.
Tugas jarak jauh berikut membuat direktori yang disebut pengujian pada sistem Linux jarak jauh:
{
"taskLabel": "mkdir",
"appliesTo": "CMakeLists.txt",
"type": "remote",
"command": "mkdir test",
"remoteMachineName": "localhost"
}
Klik kanan pada apa pun CMakeLists.txt
dan pilih opsi mkdir untuk menjalankan tugas ini.
Nilai remoteMachineName
harus cocok dengan Nama Host koneksi di Pengelola Sambungan.
Makro vendor Microsoft
Dua peta vendor Microsoft, Visual Studio Settings
dan Visual Studio Remote Settings
, mendukung semua makro yang ditentukan oleh CMake. Peta vendor kami mendukung semua makro yang ditentukan oleh CMake. Untuk informasi selengkapnya, lihat Ekspansi Makro cmake-presets. Semua makro dan variabel lingkungan diperluas sebelum diteruskan ke CMake.
Visual Studio mendukung makro vendor dengan awalan ms
. Makro vendor Microsoft hanya dapat digunakan di peta vendor Microsoft. CMake tidak dapat menggunakan preset yang memiliki makro vendor di luar peta vendor.
Makro | Deskripsi |
---|---|
$ms{projectDirName} |
Mengevaluasi ke nama folder yang terbuka di Visual Studio. Makro ini digunakan untuk mengatur nilai sourceDir default dalam skenario salinan jarak jauh. Makro ini tidak didukung oleh Visual Studio Code. Gunakan ${sourceDirName} sebagai gantinya. |
Variabel lingkungan
Makro | Deskripsi |
---|---|
$env{<variable-name>} $penv{<variable-name>} |
Mereferensikan variabel lingkungan menggunakan sintaks ini yang didukung oleh CMake. Untuk informasi selengkapnya, lihat Ekspansi Makro cmake-presets. |
Makro yang tidak digunakan lagi
Beberapa makro yang didukung oleh CMakeSettings.json
telah ditolak dengan adopsi CMakePresets.json
.
Gunakan makro yang didukung oleh CMake untuk membuat jalur file Anda. Saat Anda menggunakan makro, itu memastikan bahwa file yang sama CMakePresets.json
berfungsi di dalam Visual Studio dan dari baris perintah.
Makro yang tidak digunakan lagi | Rekomendasi |
---|---|
${projectFile} |
${sourceDir}/CMakeLists.txt |
${thisFile} |
${sourceDir}/CMakePresets.json |
Sintaks shell yang diterima
Gunakan sintaks untuk $env{HOME}
mereferensikan $HOME
saat membuat jalur Linux di peta vendor Microsoft.