CMakePresets.json
ve CMakeUserPresets.json
Microsoft satıcı haritaları
CMake, kullanıcıların ortak yapılandırma, CMakePresets.json
derleme ve CMakeUserPresets.json
test 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.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. Ö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 , Linux ve macOS değ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 olabilirBu 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 bool : 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-cl ile 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-cl 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 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.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 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 sftp değ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 , Verbose ve Diagnostic 'dırNormal . varsayılan değeridir Normal . |
rsyncCommandArgs |
komutuna geçirilen rsync komut 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 true 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ı
ve remotePrebuildEvent
remotePostbuildEvent
için seçenekler, benimsenmesiyle CMakePresets.json
kullanım dışı bırakılmıştır.
kullanarak add_custom_command
derleme ö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.json
ekleyebilirsiniz. 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 ms
satı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.json
kullanı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.