CMakePresets.json ve CMakeUserPresets.json Microsoft satıcı haritaları

CMake, kullanıcıların ortak yapılandırma, CMakePresets.json derleme ve CMakeUserPresets.jsontest seçeneklerini belirtmesine ve bunları başkalarıyla paylaşmasına olanak sağlayan ve olmak üzere iki dosyayı destekler.

CMakePresets.json ve CMakeUserPresets.json CMake'yi Visual Studio'da, Visual Studio Code'da, Sürekli Tümleştirme (CI) işlem hattında ve komut satırından yönlendirmek için kullanılabilir.

CMakePresets.json proje genelindeki derlemeleri kaydetmeye yöneliktir ve CMakeUserPresets.json geliştiricilerin kendi yerel derlemelerini kaydetmesine yöneliktir. Her iki dosya için de şema aynıdır.

CMakePresets.json ve CMakeUserPresets.json destek satıcısı, satıcıya özgü bilgileri depolamak için eşler. Microsoft, Visual Studio ve Visual Studio Code'a özgü seçeneklerle iki satıcı eşlemesi tutar. Burada iki Microsoft satıcı eşlemesini ve satıcı makrolarını belgeleyeceğiz. Şemanın geri kalanı hakkında daha fazla bilgi için resmi CMake belgelerine bakın. Ön Ayarları Yapılandırma, Derleme Ön Ayarları ve Test Ön Ayarları hakkında bilgi içerir.

Visual Studio'da kullanma CMakePresets.json hakkında daha fazla bilgi için bkz . Visual Studio'da CMake Ön Ayarları ile yapılandırma ve derleme

Visual Studio Code'da kullanma CMakePresets.json hakkında daha fazla bilgi için bkz . VS Code'da CMake Ön Ayarları ile yapılandırma ve derleme

Visual Studio Ayarları satıcı haritası

Ön Ayarı Yapılandır başına satıcı URI'si microsoft.com/VisualStudioSettings/CMake/<version> ile bir satıcı eşlemesine izin verilir ve Visual Studio ve Visual Studio Code'da CMake tümleştirmesine özgü seçenekleri içerir. Satıcı haritasındaki tüm seçenekler Visual Studio için geçerlidir. Hem Visual Studio hem de Visual Studio Code için geçerli olan seçenekler açıkça işaretlendi.

Visual Studio Ayarları satıcı haritasındaki tüm ayarlar isteğe bağlıdır ve anahtar tarafından belirtilen Ön Ayarları Yapılandır'dan devralınır inherits . Dosyaya yalnızca değiştirilmiş seçenekler yazılır. Visual Studio Ayarları satıcı haritası hem hem de CMakePresets.json CMakeUserPresets.jsontarafından desteklenir.

Visual Studio Ayarları satıcı haritasındaki seçenekler CMake veya CTest komut satırının oluşturulmasını etkilemez. Böylece aynı CMakePresets.json dosya Visual Studio, Visual Studio Code ve komut satırından CMake'i yönlendirmek için kullanılabilir. Özel durumlar ve cmakeGenerateCommand seçenekleridircacheRoot. Bu seçenekler Visual Studio'da Varolan Önbelleği Aç senaryosuna özgü olup komut satırından yeniden oluşturulamaz.

Ayar Açıklama
hostOS Desteklenen işletim sistemleri (işletim sistemi) dizisi. Kabul edilen değerler , Linuxve macOSdeğerleridirWindows.

değeri hostOS Visual Studio ve Visual Studio Code tarafından hedef sistemin işletim sistemi için geçerli olmayan Ön Ayarları Yapılandır'ı gizlemek ve daha iyi bir kullanıcı deneyimi sağlamak için kullanılır.

Belirtilmemişse hostOS , Visual Studio ve Visual Studio Code her zaman seçim için tüm Ön Ayarları Yapılandır'ı gösterir. Bu alan, bir dize içeren bir diziye eşdeğer olan bir dize de olabilir

Bu seçenek hem Visual Studio hem de Visual Studio Code tarafından desteklenir.
intelliSenseMode Visual Studio'da IntelliSense bilgilerini bilgi işlem için kullanılan modu biçiminde <target>-<toolset>-<arch>belirtir.

Kabul edilen değerler:

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

Belirtilmezse intelliSenseMode Visual Studio, belirtilen derleyicilerinizle ve hedef mimarinizle eşleşen IntelliSense modunu kullanır. intelliSenseMode genellikle çapraz derleme için geliştirilmiş IntelliSense sağlamak için kullanılır.

Visual Studio 2019'da, clang veya clang-cl ile derleme yaparken açıkça bir clang IntelliSense modu belirtmeniz gerekir.
intelliSenseOptions Ek IntelliSense yapılandırma seçeneklerinin haritası.

useCompilerDefaultsbool: Derleyicinin varsayılan olarak kullanılıp kullanılmayacağını belirten bir, IntelliSense yollarını tanımlar ve ekler. Yalnızca kullanılan derleyiciler gcc stili bağımsız değişkenleri desteklemiyorsa olmalıdır false . varsayılan değeridir true.

additionalCompilerArgs: Visual Studio'da IntelliSense'i denetlemek için ek seçenekler dizisi. Bu seçenek makro genişletmeyi destekler.
enableMicrosoftCodeAnalysis bool veya clang-clile cl derleme yaparken Visual Studio'da Microsoft kod analizini etkinleştiren bir. varsayılan değeridir false.
codeAnalysisRuleset Visual Studio'da Microsoft kod analizini çalıştırırken kullanılacak kural kümesini belirtir. Bir kural kümesi dosyasının yolunu veya Visual Studio ile yüklenen bir kural kümesi dosyasının adını kullanabilirsiniz. Bu seçenek makro genişletmeyi destekler.
disableExternalAnalysis bool Visual Studio'da dış üst bilgilerde kod analizinin çalıştırılıp çalıştırılmayacağını belirten bir.
codeAnalysisExternalRuleset Visual Studio'da dış üst bilgide Microsoft kod analizini çalıştırırken kullanılacak kural kümesini belirtir. Bir kural kümesi dosyasının yolunu veya Visual Studio ile yüklenen bir kural kümesi dosyasının adını kullanabilirsiniz. Bu seçenek makro genişletmeyi destekler.
enableClangTidyCodeAnalysis ile clang-clderleme yaparken Visual Studio'da clang-tidy kod analizini etkinleştiren bir bool. varsayılan değeridir false.
clangTidyChecks Visual Studio'da clang-tidy kod analizi çalıştırılırken clang-tidy'a geçirilen uyarıların virgülle ayrılmış listesi. Joker karakterlere izin verilir ve - ön ek denetimleri kaldırır.
cacheRoot CMake önbelleğinin yolunu belirtir. Bu dizin mevcut CMakeCache.txt bir dosya içermelidir. Bu anahtar yalnızca Visual Studio'da Varolan Önbelleği Aç senaryosu tarafından desteklenir. Bu seçenek makro genişletmeyi destekler.
cmakeGenerateCommand CMake önbelleğini oluşturmak için bir komut satırı aracı (komut satırı programı ve bağımsız değişkenleri olarak belirtilir, örneğin) gencache.bat debug. Bu komut, CMake yapılandırması çağrıldığında ön ayarın belirtilen ortamını kullanarak kabukta çalışır. Bu anahtar yalnızca Visual Studio'da Varolan Önbelleği Aç senaryosu tarafından desteklenir. Bu seçenek makro genişletmeyi destekler.

Visual Studio Uzak Ayarlar satıcı haritası

Önceden Ayarlanmış Yapılandırma başına satıcı URI'sine microsoft.com/VisualStudioRemoteSettings/CMake/<version> sahip bir satıcı eşlemesine izin verilir ve Visual Studio'da uzaktan geliştirmeye özgü seçenekler içerir. Uzaktan geliştirme, CMake'i uzak bir SSH bağlantısında veya WSL'de çağırdığınız anlamına gelir. Visual Studio Uzak Ayarlar satıcı haritasındaki seçeneklerin hiçbiri Visual Studio Code için geçerli değildir.

Visual Studio Uzak Ayarlar satıcı haritasındaki tüm ayarlar isteğe bağlıdır ve anahtar tarafından inherits belirtilen Ön Ayarları Yapılandır'dan devralınır. Dosyaya yalnızca değiştirilmiş seçenekler yazılır. Visual Studio Uzak Ayarlar satıcı haritası hem hem de CMakePresets.json CMakeUserPresets.jsontarafından desteklenir.

Visual Studio Ayarları satıcı haritasındaki seçenekler CMake veya CTest komut satırının oluşturulmasını etkilemez. Böylece aynı CMakePresets.json dosya Visual Studio, Visual Studio Code ve komut satırından CMake'i yönlendirmek için kullanılabilir.

WSL1 hedeflenirken Visual Studio Uzak Ayarlar satıcı haritasındaki seçeneklerin çoğu yoksayılır. Bunun nedeni WSL1 araç takımının tüm komutları yerel olarak yürütmesi ve WSL1'den yerel kaynak dosyalara erişmek için klasörün altına /mnt bağlanan Windows sürücülerine bağlı olmasıdır. Kaynak dosya kopyası gerekmez. WSL1 hedeflenirken yoksayılan seçenekler açıkça işaretlendi.

Ayar Açıklama
sourceDir Projenin kopyalanacağı uzak sistemdeki dizinin yolu. varsayılan değeridir $env{HOME}/.vs/$ms{projectDirName}. Bu seçenek makro genişletmeyi destekler.

Uzak kopyalama senaryolarında makro ${sourceDir} , Windows makinesindeki proje kaynak dizinini değil uzak sistemdeki proje kaynak dizinini değerlendirir. Uzaktan kopyalama senaryoları, uzak SSH bağlantısını hedeflemeyi içerir. Bu gibi durumlarda, uzak sistemdeki proje kaynak dizini Visual Studio Uzak Ayarlar satıcı eşlemesindeki değerine sourceDir göre belirlenir. WSL1 hedeflendiğinde bu seçenek yoksayılır.
copySources ise true, Visual Studio kaynakları Windows'tan uzak sisteme kopyalar. Dosya eşitlemeyi kendiniz yönetiyorsanız olarak false ayarlayın. varsayılan değeridir true. WSL1 hedeflendiğinde bu seçenek yoksayılır.
copySourcesOptions Windows'tan uzak sisteme kaynak kopyayla ilgili seçenekler nesnesi. WSL1 hedeflendiğinde bu nesne yoksayılır.

copySourcesOptions.exclusionList: Kaynak dosyalar uzak sisteme kopyalanırken dışlanacak yolların listesi. Yol, bir dosya veya dizinin adı ya da kopyanın kökünden göreli bir yol olabilir. varsayılan değeridir [ ".vs", ".git", "out" ]. Bu seçenek makro genişletmeyi destekler.

copySourcesOptions.method: Kaynak dosyaları uzak sisteme kopyalamak için kullanılan yöntem. Kabul edilen değerler ve sftpdeğerleridirrsync. varsayılan değeridir rsync.

copySourcesOptions.concurrentCopies: Kaynakların uzak sisteme eşitlenmesi sırasında kullanılan eşzamanlı kopya sayısı. varsayılan değeridir 5.

copySourcesOptions.outputVerbosity: Uzak sisteme kaynak kopyalama işlemlerinin ayrıntı düzeyi. Kabul edilen düzeyler , Verboseve Diagnostic'dırNormal. varsayılan değeridir Normal.
rsyncCommandArgs komutuna geçirilen rsynckomut satırı bağımsız değişkenlerinin listesi. varsayılan değeridir [ "-t", "--delete", "--delete-excluded" ]. Bu seçenek makro genişletmeyi destekler ve WSL1 hedeflendiğinde yoksayılır.
copyBuildOutput Uzak sistemdeki derleme çıktısının Windows'a geri kopyalanıp kopyalanmayacağını belirtir. varsayılan değeridir false. WSL1 hedeflendiğinde bu seçenek yoksayılır.
copyOptimizations Kaynak kopya iyileştirmeleriyle ilgili seçeneklerin nesnesi. WSL1 hedeflenirken bu seçenekler yoksayılır.

copyOptimizations.maxSmallChange: Rsync yerine sftp kullanılarak kopyalanacak en fazla dosya sayısı. Varsayılan değer 10'dır.

copyOptimizations.useOptimizations: Kullanımdaki kopya iyileştirmelerini belirtir. Kabul edilen değerler kopya iyileştirmeleri (None), yalnızca rsync iyileştirmeleri (RsyncOnly) veya rsync ve sftp iyileştirmeleri (RsyncAndSftp) değildir. varsayılan değeridir RsyncAndSftp.

copyOptimizations.rsyncSingleDirectoryCommandArgs: Tek bir dizinin içeriğini uzak sisteme kopyalarken rsync'e geçirilen komut satırı bağımsız değişkenlerinin listesi. varsayılan değeridir [ "-t", "-d" ]. Bu seçenek makro genişletmeyi destekler.
copyAdditionalIncludeDirectoriesList IntelliSense için yerel olarak kopyalanacak uzak üst bilgi dizinlerinin yollarının listesi. Bu seçenek makro genişletmeyi destekler.
copyExcludeDirectoriesList IntelliSense için yerel olarak kopyalanmayacak uzak üst bilgi dizinlerinin yollarının listesi. Bu seçenek makro genişletmeyi destekler.
forceWSL1Toolset ise trueVisual Studio, Visual Studio'dan WSL'yi hedeflerken her zaman WSL1 araç takımını kullanır. WSL1 araç takımı tüm komutları yerel olarak yürütür ve WSL'den yerel kaynak dosyalarına erişmek için klasörün altına /mnt bağlanan Windows sürücülerini kullanır. WSL2 ile bu seçenekler daha yavaş olabilir. varsayılan değeridir false.

WSL1 araç takımı her zaman Visual Studio 2019 sürüm 16.10'da kullanılır. WSL2 için yerel destek kullanılabilir olduğunda bu seçenek uygun olacaktır.

Uzaktan derleme öncesi ve derleme sonrası olayları

ve remotePrebuildEvent remotePostbuildEvent için seçenekler, benimsenmesiyle CMakePresets.jsonkullanım dışı bırakılmıştır.

kullanarak add_custom_commandderleme öncesi, ön bağlantı ve derleme sonrası olayları kodlayınCMakeLists.txt. Visual Studio ile oluştururken ve komut satırından aynı davranışı sağlar.

Visual Studio'ya özgü bir davranışa ihtiyacınız varsa içine özel bir uzak görev tasks.vs.jsonekleyebilirsiniz. Başlamak için Klasör Görünümü'nden Çözüm Gezgini köküne CMakeLists.txt sağ tıklayın ve Görevleri Yapılandır'ı seçin. Ardından dosyanıza tasks.vs.json yeni bir uzak görev ekleyebilirsiniz.

Aşağıdaki uzak görev, uzak Linux sisteminde test adlı bir dizin oluşturur:

{
      "taskLabel": "mkdir",
      "appliesTo": "CMakeLists.txt",
      "type": "remote",
      "command": "mkdir test",
      "remoteMachineName": "localhost"
  }

Herhangi birine CMakeLists.txt sağ tıklayın ve bu görevi yürütmek için mkdir seçeneğini belirleyin.

değeriremoteMachineName, Bağlantı Yöneticisi bir bağlantının Ana Bilgisayar Adı ile eşleşmelidir.

Microsoft satıcı makroları

İki Microsoft satıcısı eşlemesi Visual Studio Settings ve Visual Studio Remote Settings, CMake tarafından tanımlanan tüm makroları destekler. Satıcı haritalarımız CMake tarafından tanımlanan tüm makroları destekler. Daha fazla bilgi için bkz . cmake-presets Makro Genişletme. CMake'ye geçirilmeden önce tüm makrolar ve ortam değişkenleri genişletilir.

Visual Studio, ön ekiyle mssatıcı makrolarını destekler. Microsoft satıcı makroları yalnızca Microsoft satıcı haritalarında kullanılabilir. CMake, satıcı eşlemesinin dışında satıcı makroları olan ön ayarları kullanamaz.

Makro Açıklama
$ms{projectDirName} Visual Studio'da açık klasörün adını değerlendirir. Bu makro, uzak kopyalama senaryolarında varsayılan değerini sourceDir ayarlamak için kullanılır. Bu makro Visual Studio Code tarafından desteklenmiyor. Bunun yerine ${sourceDirName} kullanın.

Ortam değişkenleri

Makro Açıklama
$env{<variable-name>}
$penv{<variable-name>}
CMake tarafından desteklenen bu söz diziminde kullanılan başvuru ortamı değişkenleri. Daha fazla bilgi için bkz . cmake-presets Makro Genişletme.

Kullanım dışı makrolar

tarafından CMakeSettings.json desteklenen birkaç makro, benimsenmesiyle CMakePresets.jsonkullanım dışı bırakılmıştır.

Dosya yollarınızı oluşturmak için CMake tarafından desteklenen makroları kullanın. Makroları kullandığınızda, aynı CMakePresets.json dosyanın Visual Studio'da ve komut satırından çalışmasını sağlar.

Kullanım dışı makro Öneri
${projectFile} ${sourceDir}/CMakeLists.txt
${thisFile} ${sourceDir}/CMakePresets.json

Kabul edilen kabuk söz dizimi

$env{HOME} Microsoft satıcı eşlemelerinde Linux yolları oluştururken başvurmak $HOME için söz dizimini kullanın.