Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CMake projeleri Visual Studio 2017 ve sonraki sürümlerde desteklenir.
Dosya, Visual Studio'nın CMakeSettings.json IntelliSense için kullandığı ve belirtilen yapılandırma ve derleyici ortamı için CMake'e geçirdiği komut satırı bağımsız değişkenlerini oluşturmak için kullandığı bilgileri içerir. Yapılandırma, belirli bir platforma ve derleme türüne (örneğin) x86-DebugLinux-Releaseuygulanan özellikleri belirtir. Her yapılandırma, MSVC, GCC veya Clang gibi derleyici araç takımı hakkındaki bilgileri kapsülleyen bir ortam belirtir. CMake, proje için kök CMakeCache.txt dosyayı ve diğer proje dosyalarını yeniden oluşturmak için komut satırı bağımsız değişkenlerini kullanır. Dosyalardaki CMakeLists.txt değerler geçersiz kılınabilir.
IDE'ye yapılandırma ekleyebilir veya kaldırabilir ve sonra bunları doğrudan JSON dosyasında düzenleyebilir veya CMake Ayarları düzenleyicisini (Visual Studio 2019 ve üzeri) kullanabilirsiniz. Çeşitli proje dosyalarını oluşturmak için IDE'de yapılandırmalar arasında kolayca geçiş yapabilirsiniz. Daha fazla bilgi için bkz . Visual Studio'da CMake derleme ayarlarını özelleştirme.
Yapılandırmalar
Dizi, configurations bir CMake projesi için tüm yapılandırmaları içerir. Önceden tanımlanmış yapılandırmalar hakkında daha fazla bilgi için bkz . CMake önceden tanımlanmış yapılandırma başvurusu. Dosyaya istediğiniz sayıda önceden tanımlanmış veya özel yapılandırma ekleyebilirsiniz.
A configuration şu özelliklere sahiptir:
addressSanitizerEnabled: isetrue, AddressSanitizer kullanarak programı derler. Linux'ta ve derleyici iyileştirme düzeyi-fno-omit-frame-pointerile-Osderleyin veya-Ooen iyi sonuçları elde edin.addressSanitizerRuntimeFlags: Ortam değişkeninde AddressSanitizer'aASAN_OPTIONSgeçirilen çalışma zamanı bayrakları. Biçim: flag1=value:flag2=value2.buildCommandArgs: sonrasında CMake'e--build --geçirilen yerel derleme anahtarlarını belirtir. Örneğin, Ninja oluşturucuyu kullanırken geçirme-v, Ninja'yı komut satırlarını çıktıya zorlar. Ninja komutları hakkında daha fazla bilgi için bkz . Ninja komut satırı bağımsız değişkenleri.buildRoot: CMake'in seçilen oluşturucu için derleme betikleri oluşturduğu dizini belirtir. Geçiş için-DCMAKE_BINARY_DIReşler ve neredeCMakeCache.txtoluşturulduğunu belirtir. Klasör yoksa oluşturulur. Desteklenen makrolar :${workspaceRoot},${workspaceHash},${projectFile},${projectDir},${thisFile}, ,${thisFileDir},${name},${generator}.${env.VARIABLE}cacheGenerationCommand: Önbelleği oluşturmak için birgencache.bat debugkomut satırı aracı ve bağımsız değişkenleri belirtir. Komut, kullanıcı açıkça yeniden oluşturma istediğinde veya birCMakeLists.txtveyaCMakeSettings.jsondosya değiştirildiğinde yapılandırma için belirtilen ortamdaki kabuktan çalıştırılır.cacheRoot: CMake önbelleğinin yolunu belirtir. Bu dizin mevcutCMakeCache.txtbir dosya içermelidir.clangTidyChecks: clang-tidy'a geçirilen uyarıların virgülle ayrılmış listesi; joker karakterlere izin verilir ve '-' ön eki denetimleri kaldırır.cmakeCommandArgs: Proje dosyalarını oluşturmak için çağrıldığında CMake'e geçirecek ek komut satırı seçeneklerini belirtir.cmakeToolchain: Araç zinciri dosyasını belirtir. kullanılarak-DCMAKE_TOOLCHAIN_FILECMake'e geçirilir.codeAnalysisRuleset: Kod analizini çalıştırırken kullanılacak kural kümesini belirtir. Visual Studio tarafından yüklenen bir kural kümesi dosyasının tam yolunu veya dosya adını kullanabilirsiniz.configurationType: Seçili oluşturucu için derleme türü yapılandırmasını belirtir. Şu durumlardan biri olabilir:DebugReleaseMinSizeRelRelWithDebInfo
ctestCommandArgs: Testleri çalıştırırken CTest'e geçirebilmek için ek komut satırı seçeneklerini belirtir.description: Menülerde görüntülenen bu yapılandırmanın açıklaması.enableClangTidyCodeAnalysis: Kod analizi için Clang-Tidy kullanın.enableMicrosoftCodeAnalysis: Kod analizi için Microsoft kod çözümleme araçlarını kullanın.generator: Bu yapılandırma için kullanılacak CMake oluşturucuyu belirtir. Şu durumlardan biri olabilir:Yalnızca Visual Studio 2019:
Visual Studio 16 2019Visual Studio 16 2019 Win64Visual Studio 16 2019 ARM
Visual Studio 2017 ve üzeri:
Visual Studio 15 2017Visual Studio 15 2017 Win64Visual Studio 15 2017 ARMVisual Studio 14 2015Visual Studio 14 2015 Win64Visual Studio 14 2015 ARMUnix MakefilesNinja
Ninja esneklik ve işlev yerine yüksek derleme hızları için tasarlandığından varsayılan olarak ayarlanır. Ancak bazı CMake projeleri Ninja kullanarak doğru şekilde oluşturulamayabilir. Derleme hatası oluşursa, CMake'e bunun yerine Visual Studio projeleri oluşturmasını sağlayabilirsiniz.
Visual Studio 2017'de bir Visual Studio oluşturucu belirtmek için, CMake | öğesini seçerek ana menüden ayarlar düzenleyicisini açın CMake Ayarları'nı değiştirin. "Ninja" öğesini silin ve "V" girin. Bu değişiklik, istediğiniz oluşturucuyu seçmenize olanak tanıyan IntelliSense'i etkinleştirir.
Visual Studio 2019'da bir Visual Studio oluşturucu belirtmek için, Çözüm Gezgini'da dosyaya CMakeLists.txt sağ tıklayın ve proje>
Varsayılan olarak, etkin yapılandırma bir Visual Studio oluşturucuyu belirttiğinde, bağımsız değişkenlerle -m -v:minimal MSBuild'i çağırır. Derlemeyi özelleştirmek için dosyasının buildCommandArgsCMakeSettings.json içindeki özelliğini kullanın. Burada, derleme sistemine geçirmek için MSBuild komut satırı bağımsız değişkenlerini belirtebilirsiniz:
"buildCommandArgs": "-m:8 -v:minimal -p:PreferredToolArchitecture=x64"
installRoot: CMake'in seçilen oluşturucu için yükleme hedefleri oluşturduğu dizini belirtir. Desteklenen makrolar :${workspaceRoot},${workspaceHash},${projectFile},${projectDir},${thisFile}, ,${thisFileDir},${name},${generator}.${env.VARIABLE}inheritEnvironments: Bu yapılandırmanın bağımlı olduğu bir veya daha fazla derleyici ortamı belirtir. Herhangi bir özel ortam veya önceden tanımlanmış ortamlardan biri olabilir. Daha fazla bilgi için bkz . Ortamlar.intelliSenseMode: IntelliSense bilgilerini bilgi işlem için kullanılan modu belirtir". Değer aşağıdakilerden biri olabilir:windows-msvc-x86windows-msvc-x64windows-msvc-armwindows-msvc-arm64android-clang-x86android-clang-x64android-clang-armandroid-clang-arm64ios-clang-x86ios-clang-x64ios-clang-armios-clang-arm64windows-clang-x86windows-clang-x64windows-clang-armwindows-clang-arm64linux-gcc-x86linux-gcc-x64linux-gcc-arm
name: yapılandırmayı adlandırın. Önceden tanımlanmış yapılandırmalar hakkında daha fazla bilgi için bkz . CMake önceden tanımlanmış yapılandırma başvurusu.wslPath: Linux için Windows Alt Sistemi örneğinin başlatıcısının yolu.
CMake Linux projeleri için ayarlar
-
remoteMachineName: CMake, derlemeler ve hata ayıklayıcıyı barındıran uzak Linux makinesinin adını belirtir. Yeni Linux makineleri eklemek için Bağlantı Yöneticisi kullanın. Desteklenen makrolar şunlardır:${defaultRemoteMachineName}. -
remoteCopySourcesOutputVerbosity: Uzak makineye kaynak kopyalama işleminin ayrıntı düzeyini belirtir. ,NormalveyaVerbosetürlerindenDiagnosticbiri olabilir. -
remoteCopySourcesConcurrentCopies: Kaynakların uzak makineye eşitlenmesi sırasında kullanılacak eşzamanlı kopyaları belirtir (yalnızca sftp). -
remoteCopySourcesMethod: Uzak makineye dosya kopyalama yöntemini belirtir. veyarsyncolabilirsftp. -
remoteCMakeListsRoot: CMake projesini içeren uzak makinedeki dizini belirtir. Desteklenen makrolar , ,${workspaceRoot},${workspaceHash},${projectFile},${projectDir}, ,${thisFile},${thisFileDir}${name}ve${generator}makrolarıdır${env.VARIABLE}. -
remoteBuildRoot: CMake'in seçilen oluşturucu için derleme betikleri oluşturduğu uzak makinedeki dizini belirtir. Desteklenen makrolar :${workspaceRoot},${workspaceHash},${projectFile},${projectDir},${thisFile}, ,${thisFileDir},${name},${generator}.${env.VARIABLE} -
remoteInstallRoot: CMake'in seçilen oluşturucu için yükleme hedefleri oluşturduğu uzak makinedeki dizini belirtir. Desteklenen makrolar ,${workspaceRoot},${workspaceHash}${projectFile}, ,${projectDir},${thisFile}, ,${thisFileDir},${name}${generator}, ve${env.VARIABLE}' dir; buradaVARIABLEsistem, kullanıcı veya oturum düzeyinde tanımlanmış bir ortam değişkenidir. -
remoteCopySources: Visual Studio'nınbooleankaynak dosyaları uzak makineye kopyalayıp kopyalamayacağını belirten bir. Varsayılan değer true'dur. Dosya eşitlemeyi kendiniz yönetiyorsanız false olarak ayarlayın. -
remoteCopyBuildOutputboolean: Uzak sistemden derleme çıkışlarının kopyalanıp kopyalanmayacağını belirten bir. -
remoteCopyAdditionalIncludeDirectories: IntelliSense'i desteklemek için uzak makineden kopyalanacak dizinleri ekleyin. "/path1;/path2..." olarak biçimlendirin. -
remoteCopyExcludeDirectories: Uzak makineden kopyalanacak DEĞİl dizinleri ekleyin. "/path1;/path2..." olarak biçimlendirin. -
remoteCopyUseCompilerDefaults: Derleyicinin varsayılan tanımlarının kullanılıp kullanılmayacağını ve IntelliSense için yolların eklenip eklenmeyeceğini belirtir. Yalnızca kullanılan derleyiciler gcc stili bağımsız değişkenleri desteklemezse false olmalıdır. -
rsyncCommandArgs: rsync'e geçirilen bir dizi komut satırı seçeneğini belirtir. -
remoteCopySourcesExclusionListarray: Kaynak dosyalar kopyalanırken dışlanacak yolların listesini belirten bir yol: yol, bir dosyanın/dizinin adı veya kopyanın kökünden göreli bir yol olabilir. Joker karakterler*ve?glob desen eşleştirme için kullanılabilir. -
cmakeExecutable: Dosya adı ve uzantısı dahil olmak üzere CMake programının yürütülebilir dosyasının tam yolunu belirtir. -
remotePreGenerateCommand: Dosyayı ayrıştırmakCMakeLists.txtiçin CMake'yi çalıştırmadan önce çalıştırılacak komutu belirtir. -
remotePrebuildCommand: Derlemeden önce uzak makinede çalıştırılacak komutu belirtir. -
remotePostbuildCommand: Derledikten sonra uzak makinede çalıştırılacak komutu belirtir. -
variables: CMake'ye olarak-D name=valuegeçirilen CMake değişkenlerinin ad-değer çiftini içerir. CMake proje derleme yönergeleriniz herhangi bir değişkenin doğrudan dosyaya eklenmesiniCMakeCache.txtbelirtiyorsa, bunları buraya eklemenizi öneririz. Bu örnek, 14.14.26428 MSVC Derleme Araçları'nı kullanmak için ad-değer çiftlerinin nasıl belirtileceğini gösterir:
"variables": [
{
"name": "CMAKE_CXX_COMPILER",
"value": "C:/Program Files (x86)/Microsoft Visual Studio/157/Enterprise/VC/Tools/MSVC/14.14.26428/bin/HostX86/x86/cl.exe",
"type": "FILEPATH"
},
{
"name": "CMAKE_C_COMPILER",
"value": "C:/Program Files (x86)/Microsoft Visual Studio/157/Enterprise/VC/Tools/MSVC/14.14.26428/bin/HostX86/x86/cl.exe",
"type": "FILEPATH"
}
]
öğesini tanımlamazsanız"type""STRING", türü varsayılan olarak kabul edilir.
-
remoteCopyOptimizations: Uzak hedefe kaynak kopyayı denetlemek için Visual Studio 2019 sürüm 16.5 veya üzeri özellikler. İyileştirmeler varsayılan olarak etkindir. ,remoteCopyUseOptimizationsversyncSingleDirectoryCommandArgsiçerirremoteCopySourcesMaxSmallChange.
Ortamlar
Ortam, Visual Studio'un CMake'yi çağırmak için kullandığı işlemde ayarlanan ortam değişkenlerini kapsüller. MSVC projeleri için, belirli bir platform için geliştirici komut isteminde ayarlanan değişkenleri yakalar. Örneğin ortam, msvc_x64_x64 VS {version} için Geliştirici Komut İstemi'ni -arch=amd64 -host_arch=amd64 bağımsız değişkenleriyle çalıştırmakla aynıdır. söz dizimini env.{<variable_name>}CMakeSettings.json kullanarak tek tek ortam değişkenlerine başvurabilirsiniz. Örneğin, klasörlere yönelik yollar oluşturabilirsiniz. Önceden tanımlanmış aşağıdaki ortamlar sağlanır:
-
linux_arm: ARM Linux'ı uzaktan hedefle. -
linux_x64: x64 Linux'ı uzaktan hedefle. -
linux_x86: x86 Linux'ı uzaktan hedefle. -
msvc_arm: MSVC derleyicisi ile ARM Windows'unu hedefle. -
msvc_arm_x64: 64 bit MSVC derleyicisi ile ARM Windows'un hedefini belirleyin. -
msvc_arm64: MSVC derleyicisi ile ARM64 Windows'ı hedefle. -
msvc_arm64_x64: 64 bit MSVC derleyicisi ile ARM64 Windows'un hedefini belirleyin. -
msvc_arm64ec: MSVC derleyicisi ile Windows ARM64EC hedefle. -
msvc_arm64ec_x64: 64 bit MSVC derleyicisi ile Windows'ARM64EC hedefle. -
msvc_x64: MSVC derleyicisi ile x64 Windows'ı hedefle. -
msvc_x64_x64: 64 bit MSVC derleyicisi ile x64 Windows'un hedefini belirleyin. -
msvc_x86: MSVC derleyicisi ile x86 Windows'ı hedefle. -
msvc_x86_x64: 64 bit MSVC derleyicisi ile x86 Windows'un hedefini belirleyin.
Ortam değişkenlerine erişme CMakeLists.txt
Bir CMakeLists.txt dosyadan, tüm ortam değişkenlerine söz dizimi $ENV{variable_name}tarafından başvurulur. Bir ortamın kullanılabilir değişkenlerini görmek için ilgili komut istemini açın ve yazın SET. Ortam değişkenlerindeki bilgilerin bazıları CMake sistem introspection değişkenleri aracılığıyla da kullanılabilir, ancak ortam değişkenini kullanmayı daha uygun bulabilirsiniz. Örneğin, ortam değişkenleri aracılığıyla MSVC derleyici sürümünü veya Windows SDK sürümünü kolayca alabilirsiniz.
Özel ortam değişkenleri
içinde CMakeSettings.json, dizide environments genel olarak veya yapılandırma başına özel ortam değişkenleri tanımlayabilirsiniz. Özel ortam, bir özellik kümesini gruplandırmak için kullanışlı bir yoldur. Önceden tanımlanmış bir ortamın yerine kullanabilir veya önceden tanımlanmış bir ortamı genişletmek veya değiştirmek için kullanabilirsiniz. Dizideki environments her öğe şunlardan oluşur:
-
namespace: Ortamı, değişkenlerine biçimindekinamespace.variablebir yapılandırmadan başvurulabilecek şekilde adlandırın. Varsayılan ortam nesnesi çağrılırenvve dahil olmak üzere%USERPROFILE%belirli sistem ortamı değişkenleriyle doldurulur. -
environment: Bu değişken grubunu benzersiz olarak tanımlar. Grubun daha sonra birinheritEnvironmentsgirdide devralınmasını sağlar. -
groupPriority: Bu değişkenleri değerlendirirken önceliğini belirten bir tamsayı. Önce daha yüksek sayıda öğe değerlendirilir. -
inheritEnvironments: Bu grup tarafından devralınan ortam kümesini belirten bir değer dizisi. Bu özellik, varsayılan ortamları devralmanıza ve çalıştığında CMake'e geçirmek için özel ortam değişkenleri oluşturmanıza olanak tanır.
Visual Studio 2019 sürüm 16.4 ve üzeri: Hata ayıklama hedefleri içinde CMakeSettings.jsonbelirttiğiniz ortamla otomatik olarak başlatılır. ve launch.vs.jsoniçinde hedef veya görev başına temelinde tasks.vs.json ortam değişkenlerini geçersiz kılabilir veya ekleyebilirsiniz.
Aşağıdaki örnek, BuildDirhem x86-Debug hem de x64-Debug yapılandırmalarında devralınan tek bir genel değişkeni tanımlar. Her yapılandırma, bu yapılandırmanın özelliğinin buildRoot değerini belirtmek için değişkenini kullanır. Ayrıca, her yapılandırmanın inheritEnvironments yalnızca bu yapılandırma için geçerli olan bir değişken belirtmek için özelliğini nasıl kullandığını da unutmayın.
{
// The "environments" property is an array of key-value pairs of the form
// { "EnvVar1": "Value1", "EnvVar2": "Value2" }
"environments": [
{
"BuildDir": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build",
}
],
"configurations": [
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
// Inherit the defaults for using the MSVC x86 compiler.
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${env.BuildDir}\\${name}" },
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
// Inherit the defaults for using the MSVC x64 compiler.
"inheritEnvironments": [ "msvc_x64" ],
"buildRoot": "${env.BuildDir}\\${name}"
}
]
}
Sonraki örnekte, x86-Debug yapılandırması BuildDir özelliği için kendi değerini tanımlar. Bu değer global BuildDir
{
"environments": [
{
"BuildDir": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}",
}
],
"configurations": [
{
"name": "x86-Debug",
// The syntax for this property is the same as the global one above.
"environments": [
{
// Replace the global property entirely.
"BuildDir": "D:\\custom-builddir"
// This environment does not specify a namespace, hence by default "env" is assumed.
// "namespace" : "name" would require that this variable be referenced with "${name.BuildDir}".
}
],
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86" ],
// Evaluates to "D:\custom-builddir\x86-Debug"
"buildRoot": "${env.BuildDir}\\${name}"
},
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64" ],
// Since this configuration doesn't modify BuildDir, it inherits
// from the one defined globally.
"buildRoot": "${env.BuildDir}\\${name}"
}
]
}
Makrolar
aşağıdaki makrolar içinde CMakeSettings.jsonkullanılabilir:
-
${workspaceRoot}– çalışma alanı klasörünün tam yolu -
${workspaceHash}– çalışma alanı konumunun karması; geçerli çalışma alanı için benzersiz bir tanımlayıcı oluşturmak için kullanışlıdır (örneğin, klasör yollarında kullanmak için) -
${projectFile}– kökCMakeLists.txtdosyanın tam yolu -
${projectDir}– kökCMakeLists.txtdosyayı içeren klasörün tam yolu -
${projectDirName}– kökCMakeLists.txtdosyayı içeren klasörün adı -
${thisFile}– dosyanın tam yoluCMakeSettings.json -
${name}– yapılandırmanın adı -
${generator}– bu yapılandırmada kullanılan CMake oluşturucusunun adı
içindeki CMakeSettings.json makrolara ve ortam değişkenlerine yapılan tüm başvurular, CMake komut satırına geçirilmeden önce genişletilir.
Ninja komut satırı bağımsız değişkenleri
Hedefler belirtilmezse, Ninja 'varsayılan' hedefi oluşturur.
C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise>ninja -?
ninja: invalid option -- `-?'
usage: ninja [options] [targets...]
| Seçenek | Açıklama |
|---|---|
--version |
Ninja sürümünü yazdır ("1.7.1") |
-C DIR |
Başka bir şey yapmadan önce DIR olarak değiştirin |
-f FILE |
Giriş derleme dosyasını belirtme (default=build.ninja) |
-j N |
İşleri paralel olarak çalıştırma N (varsayılan=14, kullanılabilir CPU'lardan türetilmiş) |
-k N |
İşler başarısız olana kadar N devam edin (default=1) |
-l N |
Yük ortalaması şundan büyükse yeni işleri başlatma N |
-n |
Kuru çalıştırma (komutları çalıştırma ama başarılı gibi davran) |
-v |
Derleme sırasında tüm komut satırlarını göster |
-d MODE |
Hata ayıklamayı etkinleştirme (mod listelemek için kullanın -d list ) |
-t TOOL |
Bir alt araç çalıştırın (alt araçları listelemek için kullanın -t list ). Tüm üst düzey seçenekleri sonlandırır; ek bayraklar ara çubuğuna geçirilir |
-w FLAG |
Uyarıları ayarlama (uyarıları listelemek için kullanın -w list ) |