Aracılığıyla paylaş


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 satıcı haritalarını, satıcıya özgü bilgileri depolamak için destekler. 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 CMakePresets.json kullanımına dair daha fazla bilgi için bkz: Visual Studio'da CMake Ön Ayarları ile yapılandırma ve derleme

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

Visual Studio Ayarları sağlayıcı haritası

Yapılandırma Ön Ayarı başına satıcı URI'si microsoft.com/VisualStudioSettings/CMake/<version> olan bir satıcı eşlemesine izin verilir ve Visual Studio ve Visual Studio Code'da CMake entegrasyonu için özel seçenekler 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ısı haritasındaki tüm ayarlar isteğe bağlıdır ve inherits anahtarı tarafından belirtilen Yapılandırma Ön Ayarları'ndan devralınır. Dosyaya yalnızca değiştirilmiş seçenekler yazılır. Visual Studio Ayarları satıcı haritası hem CMakePresets.json hem de CMakeUserPresets.json tarafı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. İstisnalar cacheRoot ve cmakeGenerateCommand seçenekleridir. Bu seçenekler Visual Studio'da Varolan Önbelleği Aç senaryosuna özgü olup komut satırından yeniden oluşturulamaz.

Ayarlar Açıklama
hostOS Desteklenen işletim sistemleri dizisi. Kabul edilen değerler , Windowsve LinuxdeğerleridirmacOS.

hostOS değeri, Visual Studio ve Visual Studio Code tarafından, hedef sistemin işletim sistemine uygun olmayan Konfigürasyon Ön Ayarlarını 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 tüm Yapılandırma Ön Ayarlarını seçim için gösterir. Bu alan, bir dize içeren bir diziye eşdeğer 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ı.

useCompilerDefaults: Derleyicinin varsayılan tanımlamalarının ve IntelliSense için ekleme yollarının kullanılıp kullanılmayacağını belirten bir bool. Yalnızca kullanılan derleyiciler gcc tarzı bağımsız değişkenleri desteklemiyorsa, false olmalıdır. Varsayılan olarak true olarak ayarlanır.

additionalCompilerArgs: Visual Studio'da IntelliSense'i denetlemek için ek seçenekler dizisi. Bu seçenek makro genişletmeyi destekler.
enableMicrosoftCodeAnalysis bool, cl veya clang-cl ile derleme yaparken Visual Studio'da Microsoft kod analizini etkinleştiren bir araç. 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 Visual Studio'da dış başlık dosyalarında kod analizinin çalıştırılıp çalıştırılmayacağını belirten bir ayar.
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 clang-cl ile derleme 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 karakterler kullanılabilir ve - ön eki 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). CMake yapılandırması çağrıldığında, bu komut ö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 Uzaktan Ayarlar satıcı haritası

Configure Preset başına microsoft.com/VisualStudioRemoteSettings/CMake/<version> URI'sine sahip bir satıcı haritasına izin verilir ve bu harita, Visual Studio'da uzaktan geliştirme için ö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 Uzaktan Ayarlar satıcı haritasındaki tüm ayarlar isteğe bağlıdır ve inherits anahtarı tarafından belirtilen Ön Ayarlardan devralınır. Dosyaya yalnızca değiştirilmiş seçenekler yazılır. Visual Studio Uzak Ayarlar satıcı haritası hem CMakePresets.json hem de CMakeUserPresets.json tarafı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 Uzaktan 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 belirtilmiştir.

Ayarlar 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 durumlarda, uzak sistemdeki proje kaynak dizini, Visual Studio Uzak Ayarlar satıcı eşlemesinde sourceDir değeri temel alınarak belirlenir. WSL1 hedef alınırken bu seçenek yoksayılır.
copySources ise true, Visual Studio kaynakları Windows'tan uzak sisteme kopyalar. false olarak ayarlayın, eğer dosya eşitlemeyi kendiniz yönetiyorsanız. 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 rsync ve sftp. 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 , Normalve Verbose'dırDiagnostic. varsayılan değeridir Normal.
rsyncCommandArgs rsync komut satırına geçirilen bağımsız değişkenlerin listesi. varsayılan değeridir [ "-t", "--delete", "--delete-excluded" ]. Makro genişletmeyi destekleyen bu seçenek, 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ştirmesi yok (None), yalnızca rsync iyileştirmesi (RsyncOnly) veya rsync ve sftp iyileştirmeleri (RsyncAndSftp) içermektedir. 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 Eğer true olursa, Visual 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ı

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

Önceden derleme, önceden bağlantı ve derleme sonrası olayları CMakeLists.txt kullanarak tanımlayın add_custom_command. 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ü'nde Çözüm Gezgini köküne CMakeLists.txt sağ tıklayın ve Görevleri Yapılandır'ı seçin. Ardından dosyanıza 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.

remoteMachineName değeri, Bağlantı Yöneticisi içindeki 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 cmake-presets Makro Genişletme'ye bakın. 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ı haritasının dışında satıcı makroları içeren ö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 cmake-presets Makro Genişletme'ye bakın.

Kullanım dışı makrolar

Birçok makro, CMakeSettings.json tarafından desteklenen, CMakePresets.json'in benimsenmesiyle kullanımdan kaldırı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} söz dizimini, Microsoft satıcı eşlemelerinde Linux yolları oluştururken $HOME başvurmak için kullanın.