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 ilettiği komut satırı argümanlarının oluşturulması 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, komut satırı bağımsız değişkenlerini kullanarak proje için kök CMakeCache.txt dosyasını ve diğer proje dosyalarını yeniden oluşturur. 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 CMake önceden tanımlanmış yapılandırma referans kılavuzu bölümüne bakın. Dosyaya istediğiniz sayıda önceden tanımlanmış veya özel yapılandırma ekleyebilirsiniz.
A configuration şu özelliklere sahiptir:
addressSanitizerEnabled: isetrue, programı AddressSanitizer kullanarak derler. Linux'ta,-fno-omit-frame-pointerile derleyin ve en iyi sonuçlar için derleyici iyileştirme düzeyini-Osveya-Ooolarak belirleyin.addressSanitizerRuntimeFlags:ASAN_OPTIONSortam değişkeninde AddressSanitizer'a geçirilen çalışma zamanı etiketleri. Biçim: flag1=value:flag2=value2.buildCommandArgs: CMake'e--build --sonrasında iletilen yerel derleme anahtarlarını belirtir. Örneğin,-vgeçirildiğinde Ninja oluşturucuyu kullanırken, Ninja'yı komut satırlarını çıktı almaya 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.-DCMAKE_BINARY_DIRanahtarına eşler veCMakeCache.txtnerede oluşturulacağını belirtir. Klasör yoksa oluşturulur. Desteklenen makrolar :${workspaceRoot},${workspaceHash},${projectFile},${projectDir},${thisFile}, ,${thisFileDir},${name},${generator}.${env.VARIABLE}cacheGenerationCommand: Bir komut satırı aracı ve bağımsız değişkenleri belirtir; örneğin, önbelleği oluşturmak içingencache.bat debugkullanılır. 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 ortamda kabuktan gerçekleştirilir.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. İçinde-DCMAKE_TOOLCHAIN_FILEkullanılarak CMake'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'nde
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 CMakeSettings.json dosyasının içindeki buildCommandArgs özelliğini kullanın. Burada, derleme sistemine geçirmek üzere 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 CMake önceden tanımlanmış yapılandırma referans kılavuzu bölümüne bakın.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ın, kaynak dosyaları uzak makineye kopyalayıp kopyalamayacağını belirten birboolean. Varsayılan değer true'dur. Dosya eşitlemeyi kendiniz yönetiyorsanız false olarak ayarlayın. -
remoteCopyBuildOutput: Uzak sistemden derleme çıkışlarını kopyalayıp kopyalamayacağını belirten birboolean. -
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. Kullanılan derleyiciler gcc tarzı bağımsız değişkenleri desteklemezse yalnızca 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: Derlemeden sonra uzak makinede çalıştırılacak komutu belirtir. -
variables: CMake'e-D name=valueolarak geçirilen CMake değişkenlerinin ad-değer çiftini içerir. CMake projenizin derleme yönergeleri, herhangi bir değişkenin doğrudanCMakeCache.txtdosyasına eklenmesini belirtmiyorsa, 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, msvc_x64_x64 ortamı, VS {version} için Geliştirici Komut İstemini -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 ARM64EC Windows'u hedefleyin. -
msvc_arm64ec_x64: 64-bit MSVC derleyicisi ile ARM64EC Windows'u 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
CMakeSettings.json içinde, environments dizisinde küresel 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şkenlerinenamespace.variablebiçiminde bir yapılandırmadan başvurulabilecek şekilde adlandırın. Varsayılan ortam nesnesienvolarak adlandırılır ve%USERPROFILE%dahil belirli sistem ortamı değişkenleriyle doldurulur. -
environment: Bu değişken grubunu benzersiz olarak tanımlar. Grubun ilerde birinheritEnvironmentsgirdisinde devralınmasına olanak tanır. -
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. Her hedef veya görev başına, launch.vs.json ve tasks.vs.json içinde 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, BuildRoot'u D:\custom-builddir\x86-Debug olarak değerlendirmek için global BuildDir özelliği ile belirlenen değeri geçersiz kılar.
{
"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 CMakeSettings.json içinde kullanı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 |
N Görevler başarısız olana kadar devam edin (varsayılan=1) |
-l N |
Yük ortalaması belirtilen değerden büyükse yeni iş başlatmayın 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 ) |