Visual Studio'da CMake Ön Ayarları ile yapılandırma ve derleme
CMake, kullanıcıların ortak yapılandırma, derleme ve test seçeneklerini belirtmesine ve bunları başkalarıyla paylaşmasına olanak sağlayan iki dosyayı destekler: CMakePresets.json
ve CMakeUserPresets.json
. Visual Studio ve Visual Studio Code'da, sürekli tümleştirme (CI) işlem hattında ve komut satırından CMake'yi yönlendirmek için bu dosyaları kullanın.
CMakePresets.json
proje genelindeki derlemeleri kaydetmeye yöneliktir. CMakeUserPresets.json
, geliştiricilerin kendi yerel derlemelerini kaydetmesine yöneliktir. Her iki dosya da Visual Studio 2019 sürüm 16.10 veya sonraki sürümlerde desteklenir.
Bu makale, Visual Studio ile tümleştirme hakkında CMakePresets.json
bilgi içerir. İşte yararlı bağlantılar:
- biçimi
CMakePresets.json
hakkında daha fazla bilgi için resmi CMake belgelerine bakın. - Microsoft satıcı eşlemeleri ve makro genişletme hakkında daha fazla bilgi için bkz
CMakePresets.json
. veCMakeUserPresets.json
Microsoft satıcı eşlemeleri. - Visual Studio Code'da kullanma
CMakePresets.json
hakkında daha fazla bilgi için bkz . CMake Ön Ayarları ile yapılandırma ve derleme.
alternatif olarak CMakeSettings.json
öneririzCMakePresets.json
. Visual Studio hiçbir zaman hem hem de CMakePresets.json
CMakeSettings.json
aynı anda okumaz. Visual Studio'da tümleştirmeyi etkinleştirmek veya devre dışı bırakmak CMakePresets.json
için bkz. Visual Studio 2019'da etkinleştirmeCMakePresets.json
.
Desteklenen CMake ve CMakePresets.json
sürümleri
Desteklenen CMakePresets.json
ve CMakeUserPresets.json
şema sürümleri Visual Studio sürümünüze bağlıdır:
- Visual Studio 2019 sürüm 16.10 ve üzeri şema 2. ve 3. sürümleri destekler.
- Visual Studio 2022 sürüm 17.4 önizleme 1, şema sürüm 4 için destek ekler.
- Visual Studio 2022 sürüm 17.5 önizleme 1, şema sürüm 5 için destek ekler.
Kök nesnedeki alanı değiştirerek "version"
sürümü güncelleştirebilirsiniz. Örnek ve daha fazla bilgi için bkz CMakePresets.json
. biçim.
CMake'yi komut satırından ile çağırırken CMake CMakePresets.json
sürüm 3.20 veya üzeri gereklidir. Ancak Visual Studio, ve kendisini okur ve değerlendirir CMakePresets.json
CMakeUserPresets.json
ve CMake'yi doğrudan seçeneğiyle --preset
çağırmaz. Bu nedenle, Visual Studio içinde ile CMakePresets.json
derleme yaparken CMake sürüm 3.20 veya üzeri kesinlikle gerekli değildir.
En az CMake sürüm 3.14 veya üzerini kullanmanızı öneririz.
Visual Studio'da tümleştirmeyi etkinleştirme CMakePresets.json
CMakePresets.json
Visual Studio'da tümleştirme varsayılan olarak etkin değildir. Araç>Seçenekleri>CMake>Genel'de etkinleştirebilirsiniz:
Bu ekrana Visual Studio 2022 menüsünden ulaşılır: CMake > Genel > Araçlar > Seçenekleri. seçeneği, CMake dosya yapılandırma bölümünün altındadır.
Önemli
Tümleştirmeyi etkinleştirmek için Visual Studio'da klasörü kapatıp yeniden açın.
Visual Studio'nun bazı eski sürümlerinde, Araçlar>Seçenekleri>CMake>Genel tümleştirmeyi etkinleştirmek CMakePresets.json
için yalnızca tek bir seçeneğe sahiptir:
Aşağıdaki tablo, CMake yapılandırmasını yönlendirmek ve Visual Studio 2022 ve Visual Studio 2019 sürüm 16.10 ve sonraki sürümlerde derlemek yerine CMakeSettings.json
ne zaman CMakePresets.json
kullanıldığını gösterir. Yapılandırma dosyası yoksa, varsayılan Yapılandırma Ön Ayarları kullanılır.
Tabloda , "Araçlar>Seçenekleri etkinleştirildi", CMake'i yapılandırmak, derlemek ve test etmek için CMakePresets.json kullan'ın Araçlar>Seçenekleri>CMake>Genel'de seçili olduğu anlamına gelir.
Yapılandırma dosyaları | Araçlar > Seçenekleri devre dışı | Araçlar > Seçenekleri etkin |
---|---|---|
Yapılandırma dosyası yok | CMakeSettings.json |
CMakePresets.json |
CMakeSettings.json hediye |
CMakeSettings.json |
CMakePresets.json |
CMakePresets.json hediye |
CMakePresets.json |
CMakePresets.json |
Her iki yapılandırma dosyası da mevcut | CMakePresets.json |
CMakePresets.json |
Otomatik yapılandırma ve önbellek bildirimlerini değiştirme
Varsayılan olarak, Etkin Hedef Sistem veya Önceden Ayarlanmış Yapılandırma değişikliklerinde Visual Studio otomatik olarak çağrılır configure
. Araç>Seçenekleri>CMake>Genel'de Yapılandırma adımlarını otomatik olarak çalıştırma seçeneğini belirleyerek bu davranışı değiştirebilirsiniz. Ayrıca, CMake önbellek bildirimlerini göster seçeneğini temizleyerek tüm CMake önbellek bildirimlerini (altın çubuklar) devre dışı bırakabilirsiniz.
Varsayılan Ön Ayarları Yapılandır
Dosya yoksa CMakePresets.json
veya CMakeUserPresets.json
yoksa ya da CMakeUserPresets.json
geçersizseCMakePresets.json
, Visual Studio aşağıdaki varsayılan Ön Ayarları Yapılandır'a geri döner:
Windows örneği
{
"name": "windows-default",
"displayName": "Windows x64 Debug",
"description": "Sets Ninja generator, compilers, x64 architecture, build and install directory, debug build type",
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [ "Windows" ]
}
}
},
Linux örneği
{
"name": "linux-default",
"displayName": "Linux Debug",
"description": "Sets Ninja generator, compilers, build and install directory, debug build type",
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [ "Linux" ]
},
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
}
}
Var olmayan bir CMakePresets.json
dosyayı açmaya veya değiştirmeye çalışırsanız, Visual Studio projenizin kökünde varsayılan Ön Ayarları Yapılandır seçeneğine sahip bir CMakePresets.json
dosyayı otomatik olarak oluşturur.
Yapılandırma ve derleme
Visual Studio araç çubuğunda, tümleştirme etkinleştirildiğinde CMakePresets.json
Hedef Sistemler, Yapılandırma Ön Ayarları ve Derleme Ön Ayarları için açılan menüler vardır:
Hedef Sistem Seçin
Soldaki açılan liste etkin Hedef Sistemi gösterir. Projeyi yapılandırmak ve derlemek için CMake'nin çağrıldığı sistemdir. Bu açılan liste yerel makinenizi, konak adına göre Bağlantı Yöneticisi'deki tüm SSH bağlantılarını ve Visual Studio'nun bulabileceği tüm Linux için Windows Alt Sistemi (WSL) yüklemelerini içerir:
Açılan listede Yerel Makine, ip adresi 192.168.0.5, WSL: ubuntu2004, WSL: debian ve Bağlantıları Yönet gibi çeşitli girişler bulunur.
Yukarıdaki örnekte:
- 192.168.0.5, Bağlantı Yöneticisi eklenen uzak bir Linux sistemidir.
- ubuntu2004 ve debian , WSL yüklemeleridir.
Bağlantı Yöneticisi açmak için Bağlantıları Yönet'i seçin.
Önceden Ayarlanmış Yapılandır'ı seçin
Ortadaki açılan liste etkin Ön Ayarı Yapılandır'ı gösterir. configurePreset
Proje derleme sistemini oluşturmak için CMake çağrıldığında kullanılan değerdir. Bu açılan liste, ve CMakeUserPresets.json
içinde CMakePresets.json
tanımlanan gizli olmayan Yapılandırma Ön Ayarlarının birleşimini içerir.
Visual Studio, etkin Hedef Sistem için geçerli olmayan Ön Ayarları Yapılandır'ı gizlemek için Microsoft Visual Studio Ayarları satıcı haritasındaki değerini hostOS
kullanır. Daha fazla bilgi içinhostOS
, Visual Studio Ayarları satıcı haritası altındaki tabloda için girişe bakın.
Projenin kökünde bulunan dosyayı açmak CMakePresets.json
için Yapılandırmaları Yönet'i seçin. CMakePresets.json
henüz yoksa oluşturulur.
Derleme Ön Ayarı Seçme
Sağdaki açılan liste etkin Derleme Ön Ayarı'nı gösterir. Projeyi buildPreset
oluşturmak için CMake çağrıldığında kullanılan değerdir. Bu açılan liste, ve CMakeUserPresets.json
içinde CMakePresets.json
tanımlanan gizli olmayan Derleme Önayarlarının birleşimini içerir.
İlişkili configurePreset
bir değer belirtmek için tüm Derleme Ön Ayarları gereklidir. Visual Studio, etkin Yapılandırma Ön Ayarı için geçerli olmayan Derleme Ön Ayarlarını gizler. Daha fazla bilgi için Derleme Ön Ayarları listesine bakın.
Etkin Yapılandırma Ön Ayarı ile ilişkilendirilmiş Derleme Ön Ayarları yoksa, Visual Studio varsayılan Derleme Ön Ayarı'nı listeler. Varsayılan Derleme Ön Ayarı, komut satırından başka bağımsız değişken olmadan geçiş cmake --build
yapmaya eşdeğerdir.
Yapılandırma
Visual Studio, CMake önbelleğinin güncel olmadığını algıladığında projeyi otomatik olarak yapılandırmaya çalışır. Yapılandırmayı el ile çağırmak için ana menüden Proje>Yapılandırma <proje adını> seçin. Komut satırından çalıştırmakla cmake --preset <configurePreset>
aynıdır; burada <configurePreset>
etkin Yapılandırma Ön Ayarının adıdır.
Otomatik önbellek oluşturmayı devre dışı bırakmak için bkz . Otomatik yapılandırma ve önbellek bildirimleri.
Derleme
Projenin tamamını oluşturmak için ana menüden Tümünü Derle'yi> seçin. Komut satırından çalıştırmakla cmake --build --preset <buildPreset>
aynıdır; burada <buildPreset>
etkin Derleme Ön Ayarı'nın adıdır.
Tek bir hedef oluşturmak için Çözüm Gezgini'da CMake Hedefleri Görünümü'ne geçin. Ardından herhangi bir hedefe sağ tıklayın ve kısayol menüsünden Oluştur'a tıklayın.
Not
Visual Studio 2019, içinde CMakePresets.json
belirtilen hedeflerin buildPresets.targets
bir alt kümesini oluşturma seçeneğini desteklemez.
CTest'i çalıştırma
CMakePresets.json
Visual Studio 2019'da iki menü seçeneğini destekler:
- Proje adı> için <Test>Çalıştırma CTest'leri CTest'i çağırır ve etkin Ön Ayarı Yapılandır ve Derleme Ön Ayarı ile ilişkili tüm testleri çalıştırır ve CTest'e başka bağımsız değişken geçirilmemiştir.
- ConfigurePreset> için <Test>Çalıştırma Testi Ön Ayarı, etkin Yapılandırma Ön Ayarı ile ilişkili tüm Test Ön Ayarlarını gösterecek şekilde genişler. Tek bir Test Önayarını seçmek, komut satırından çalıştırmakla
ctest --preset <testPreset>
aynıdır ve burada<testPreset>
seçili Test Ön Ayarı'nın adıdır. Etkin Ön Ayarı Yapılandır için test ön ayarları tanımlanmadıysa bu seçenek kullanılamaz.
Visual Studio 2019'da Test Gezgini ile CMakePresets.json
tümleşik değildir.
Yeni ön ayarlar ekleme
Visual Studio 2019'da tüm komutlar ve önceden ayarlanmış şablonlar öğesini değiştirir CMakePresets.json
. doğrudan düzenleyerek CMakeUserPresets.json
yeni kullanıcı düzeyinde ön ayarlar ekleyebilirsiniz.
ve CMakeUserPresets.json
içindeki CMakePresets.json
yollar için eğik çizgi (/
) kullanın.
Yeni Yapılandırma Ön Ayarları Ekleme
öğesine yeni bir Önayar Yapılandır eklemek içinCMakePresets.json
, Çözüm Gezgini Klasör Görünümü'nden sağ tıklayın CMakePresets.json
ve kısayol menüsünden Yapılandırma Ekle'yi seçin. Önceden Ayarlanmış Şablonu Yapılandır'ı seçme iletişim kutusu görüntülenir:
Windows sistemlerinde yapılandırmak için Windows x64 Hata Ayıklama şablonunu seçin. WSL ve uzak Linux sistemlerinde yapılandırmak için Linux Hata Ayıklama şablonunu seçin. düzenleme CMakePresets.json
hakkında daha fazla bilgi için bkz . Ön ayarları düzenleme.
Seçili şablon varsa öğesine CMakePresets.json
eklenir. Aksi takdirde, şablon yeni CMakePresets.json
bir dosyaya kopyalanır.
Yeni Derleme Ön Ayarları ve Test Ön Ayarları ekleme
Visual Studio 2019, yeni Derleme Ön Ayarları ve Test Ön Ayarları için şablon sunmaz. Doğrudan düzenleyerek CMakePresets.json
Derleme Ön Ayarları ve Test Ön Ayarları ekleyebilirsiniz. Daha fazla bilgi için Derleme Ön Ayarları listesine, Test Ön Ayarları listesine veya örnek CMakePresets.json
bir dosyaya bakın.
Ön ayarları düzenleme
Resmi CMake belgeleri , Yapılandırma Ön Ayarları, Derleme Ön Ayarları ve Test Ön Ayarları'nı düzenlemek için en iyi kaynaktır. Aşağıdaki bilgiler, Özellikle Visual Studio geliştiricileri için uygun olan CMake belgelerinin bir alt kümesidir.
Derleyicilerinizi seçin
C ve C++ derleyicilerini, önceden ayarlanmış yapılandırmayı kullanarak ve cacheVariables.CMAKE_CXX_COMPILER
kullanarak cacheVariables.CMAKE_C_COMPILER
ayarlayabilirsiniz. Komut satırından CMake'ye ve -D CMAKE_CXX_COMPILER=<value>
geçişiyle -D CMAKE_C_COMPILER=<value>
eşdeğerdir. Daha fazla bilgi için bkz. CMAKE_<LANG>_COMPILER
.
Visual Studio ile cl.exe
ve clang-cl.exe
Visual Studio'dan derlemek için aşağıdaki örnekleri kullanın. ile clang-cl
derlemeniz için Windows bileşenleri için C++ Clang araçları yüklenmelidir.
ile derleyin cl.exe
:
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl"
},
ile derleyin clang
:
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
}
Oluşturucu olarak veya kullanıyorsanızVisual Studio 16 2019
, araç takımını toolset
belirtmek için Önceden Ayarlanmış Yapılandırma'yı ClangCL
kullanabilirsiniz:Visual Studio 17 2022
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
},
"toolset": "ClangCL",
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
}
Belirtimi destekleyen toolset
oluşturucular hakkında daha fazla bilgi için CMake belgelerine bakın CMAKE_GENERATOR_TOOLSET
.
Önemli
Visual Studio 2019'da veya ile clang
clang-cl
derleme yaparken açıkça bir Clang IntelliSense modu belirtmeniz gerekir.
Bu derlemeleri Visual Studio dışında yeniden oluşturmak için bkz . Komut satırından veya CI işlem hattından CMake çalıştırma.
Linux üzerinde veya Visual C++ araç takımı olmadan derlemek için örneğinizdeki PATH
bir derleyicinin adını veya derleyicinin tam yolunu değerlendiren bir ortam değişkenini belirtin. Dosyanın paylaşılabilir kalabilmesi için tam yollar önerilmez. GCC sürüm 8 ile oluşturulan bir ön ayar aşağıdaki gibi görünebilir:
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "gcc-8",
"CMAKE_CXX_COMPILER": "g++-8"
},
CMake araç zinciri dosyasıyla derleyicileri de ayarlayabilirsiniz. Araç zinciri dosyaları ile cacheVariables.CMAKE_TOOLCHAIN_FILE
ayarlanabilir. Bu, komut satırından CMake'ye geçirmeye -D CMAKE_TOOLCHAIN_FILE=<value>
eşdeğerdir. CMake araç zinciri dosyası genellikle çapraz derleme için kullanılır. CMake araç zinciri dosyalarını yazma hakkında daha fazla bilgi için bkz . CMake araç zincirleri.
Oluşturucunuzu seçin
Windows ve Linux Configure Preset şablonlarının her ikisi de varsayılan oluşturucu olarak Ninja'yi belirtir. Diğer yaygın oluşturucular, Windows'ta Visual Studio Oluşturucuları ve Linux ve macOS'ta Unix Makefiles'tır. Ön Ayarı Yapılandır seçeneğiyle generator
yeni bir oluşturucu belirtebilirsiniz. Komut satırından CMake'ye geçişle -G
eşdeğerdir.
Visual Studio Oluşturucu ile derleme yaparken ve toolset.strategy
set
değerini ayarlayınarchitecture.strategy
. Daha fazla bilgi için bkz . CMake oluşturucuları.
Yapılandırma türünüzü seçin
kullanarak cacheVariables.CMAKE_BUILD_TYPE
tek yapılandırma oluşturucuları için yapılandırma türünü (Debug
veya Release
) ayarlayabilirsiniz. Komut satırından CMake'ye geçişle -D CMAKE_BUILD_TYPE=<value>
eşdeğerdir. Daha fazla bilgi için bkz. CMAKE_BUILD_TYPE
.
Visual C++ araç takımıyla derleme yaparken hedef ve konak mimarinizi seçin
kullanarak hedef mimariyi (x64, Win32, ARM64 veya ARM) ayarlayabilirsiniz architecture.value
. Komut satırından CMake'ye geçişle -A
eşdeğerdir. Daha fazla bilgi için bkz . Platform Seçimi.
Not
Şu anda Visual Studio Oluşturucuları, x86 için derleme yaparken Win32 söz dizimini ve komut satırı oluşturucularını (Ninja gibi) x86 söz dizimini bekler.
kullanarak toolset.value
konak mimarisini (x64 veya x86) ve araç takımını ayarlayabilirsiniz. Komut satırından CMake'ye geçişle -T
eşdeğerdir. Daha fazla bilgi için bkz . Araç Takımı Seçimi.
architecture.strategy
ve toolset.strategy
değerleri CMake'e mimari ve araç takımı alanlarının nasıl işleneceğini bildirir. set
CMake'nin ilgili değeri external
ayarlayıp CMake'nin ilgili değeri ayarlamayacağı anlamına gelir.
Visual Studio Oluşturucu gibi IDE oluşturucuları ile kullanmanızı set
öneririz. Ninja gibi komut satırı oluşturucularla kullanın external
. Bu değerler, Visual Studio gibi satıcıların CMake çağrılmadan önce gerekli ortamı sağlamasına olanak tanır. Mimari ve araç takımı alanları hakkında daha fazla bilgi için, Ön Ayarları Yapılandırma listesine bakın.
Bir ortamın kaynağını belirlemek istemiyorsanız ve unspecified
architecture.value
olarak ayarlayabilirsiniz architecture.strategy
external
. Aşağıdaki nedenlerden herhangi biri nedeniyle ortam kaynağı oluşturmamak yararlı olabilir:
- MSVC dışında bir araç takımı kullanırsınız.
- Ekli senaryolarda olduğu gibi özel bir araç zinciri kullanırsınız.
- Derlemek için belirli bir ortama ihtiyacınız yoktur.
Mimari alanını destekleyen IDE oluşturucularının tam listesi için bkz CMAKE_GENERATOR_PLATFORM
. . Araç takımı alanını destekleyen IDE oluşturucularının tam listesi için bkz CMAKE_GENERATOR_TOOLSET
. .
Arm64'i Ninja oluşturucuyla hedeflemek veya Visual Studio 16 2019 oluşturucu ile Win32'yi (x86) hedeflemek için aşağıdaki örnekleri kullanın:
"generator": "Ninja",
"architecture": {
"strategy": "external",
"value": "arm64"
},
"generator": "Visual Studio 16 2019",
"architecture": {
"strategy": "set",
"value": "Win32"
},
Ortam değişkenlerini ayarlama ve bunlara başvurma
Ortam eşlemesini kullanarak ortam değişkenlerini ayarlayabilirsiniz. Ortam değişkenleri alan aracılığıyla devralınır inherits
, ancak bunları istediğiniz gibi geçersiz kılabilirsiniz.
Ön ayarın ortamı, kendi ortamının ve tüm üst kuruluşlarının ortamın birleşimidir. Birden çok inherits
ön ayar aynı değişken için çakışan değerler sağlıyorsa, listedeki önceki ön ayar inherits
tercih edilir. Başka bir ön ayardan devralınan bir değişkeni olarak ayarlayarak null
ayarını kaldırabilirsiniz.
Yapılandırma Ön Ayarı'nda ayarlanan ortam değişkenleri, olarak ayarlanmadığı sürece inheritConfigureEnvironment
otomatik olarak ilişkili Derleme Ön Ayarları ve Test Ön Ayarları'na false
doğru akar. Daha fazla bilgi için Ön Ayarları Yapılandırma listesine bakın.
ve $penv{<variable-name>}
söz dizimini kullanarak ortam değişkenlerine $env{<variable-name>}
başvurabilirsiniz. Daha fazla bilgi için bkz . Makro Genişletme.
Derleyiciler arası için IntelliSense'i yapılandırma
Varsayılan olarak, Visual Studio belirtilen araç takımınızla ve hedef mimarinizle eşleşen IntelliSense modunu kullanır. Çapraz derleme yapıyorsanız, Visual Studio Ayarları satıcı haritasındaki seçeneği kullanarak intelliSenseMode
doğru IntelliSense modunu el ile belirtmeniz gerekebilir. Daha fazla bilgi içinintelliSenseMode
, Visual Studio Ayarları satıcı haritası altındaki tabloda için girişe bakın.
Uzak bir sistemi veya Linux için Windows Alt Sistemi yapılandırma ve derleme
Visual Studio desteğiyle CMakePresets.json
projenizi Windows, WSL ve uzak sistemlerde kolayca yapılandırabilir ve oluşturabilirsiniz. Projenizi Windows, uzak sistem veya WSL'de yapılandırma ve derleme adımları aynıdır. Ancak, birkaç davranış uzaktan geliştirmeye özgüdür.
${sourceDir}
uzaktan kopyalama senaryolarında davranış
Yerel senaryolarda (WSL1 dahil), ${sourceDir}
Visual Studio'da açık olan proje kaynak dizininin yolunu değerlendirir. Uzak kopyalama senaryolarında, ${sourceDir}
yerel makinedeki proje kaynak dizinine değil Hedef Sistemdeki proje kaynak dizinine giden yolu değerlendirir.
Visual Studio Uzak Ayarlar satıcı eşlemesindeki değeri sourceDir
, Hedef Sistemdeki proje kaynak dizinini belirler (varsayılan olarak $env{HOME}/.vs/$ms{projectDirName}
olarak ). Daha fazla bilgi içinsourceDir
, Visual Studio Ayarları satıcı haritası altındaki tabloda için girişe bakın.
Uzak çıkış için yerel klasör
Uzaktan kopyalama senaryoları, CMake Dosya API'si yanıt dosyaları veya Visual Studio Uzak Ayarlar satıcı eşlemesi olarak ayarlandıysa copyBuildOutput
derleme dosyaları gibi bazı uzak dosyaları kopyalamak için true
yerel bir dizin gerektirir. Bu dosyalar otomatik olarak öğesine <local-source-directory>/out/<remote-connection-ID>/build/${presetName}
kopyalanır.
Windows ve WSL1'de aynı Yapılandırma Ön Ayarını çağırma
Windows ve WSL1'de aynı Ön Ayarı Yapılandır özelliğini kullanmaya çalışırsanız bir hata görürsünüz. Hem Windows hem de WSL1, Windows dosya sistemini kullanır, bu nedenle CMake hem Windows hem de WSL1 derleme ağaçları için aynı çıkış dizinini (binaryDir
) kullanmayı dener.
Aynı Ön Ayarı Hem Windows hem de WSL1 araç takımıyla kullanmak istiyorsanız, özgün ön ayardan devralan ve yeni binaryDir
bir değer belirten ikinci bir Ön Ayar Yapılandır oluşturun. Aşağıdaki örnekte, windows-preset
Windows'da base-preset
ve WSL1'de kullanılabilir:
{
"name": "windows-preset",
"inherits": "base-preset",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": "Windows"
}
}
}
Not
Visual Studio 2019'da yalnızca WSL1 araç takımı desteklenir. Bu davranışı hem Windows hem de WSL'de her çağırdığınızda configure
görürsünüz.
vcpkg tümleştirmesini etkinleştirme
Vcpkg, Windows, Linux ve macOS'ta C ve C++ kitaplıklarını yönetmenize yardımcı olur. Vcpkg tümleştirmesini etkinleştirmek için bir vcpkg araç zinciri dosyası (vcpkg.cmake
) CMake'ye geçirilmelidir. Daha fazla bilgi için vcpkg belgelerine bakın.
Visual Studio artık tümleştirme etkinleştirildiğinde CMakePresets.json
vcpkg araç zinciri dosyanızı otomatik olarak CMake'e geçiremeyecek. Bu değişiklik Visual Studio'ya özgü davranışı ortadan kaldırır ve derlemenizi komut satırından yeniden oluşturabilmenizi sağlar.
Bunun yerine, içindeki CMakePresets.json
ortam değişkenini VCPKG_ROOT
kullanarak yolunu vcpkg.cmake
olarak ayarlayın:
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": {
"value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"type": "FILEPATH"
}
},
VCPKG_ROOT
vcpkg yüklemenizin köküne ayarlanmalıdır. Daha fazla bilgi için bkz . vcpkg ortam değişkenleri.
Zaten bir CMake araç zinciri dosyası kullanıyorsanız ve vcpkg tümleştirmesini etkinleştirmek istiyorsanız bkz . Birden çok araç zinciri dosyası kullanma. Vcpkg kullanarak projeyle dış araç zinciri dosyası kullanmak için bu yönergeleri izleyin.
ve içinde launch.vs.json
değişken değiştirme tasks.vs.json
CMakePresets.json
ve tasks.vs.json
içinde launch.vs.json
değişken değiştirmeyi destekler. Dikkat edilmesi gereken bazı noktalar şunlardır:
Etkin Yapılandırma Ön Ayarı'nda ayarlanan ortam değişkenleri ve yapılandırmalarına otomatik olarak akar
launch.vs.json
tasks.vs.json
. vetasks.vs.json
içindekilaunch.vs.json
tek tek ortam değişkenlerini olarak ayarlayarak kümeyinull
kaldırabilirsiniz. Aşağıdaki örnek, değişkeniniDEBUG_LOGGING_LEVEL
içindelaunch.vs.json
olaraknull
ayarlar:"env": { "DEBUG_LOGGING_LEVEL": null }
.Etkin Yapılandırma Ön Ayarı'nda ayarlanan anahtar değerleri ve
launch.vs.json
tasks.vs.json
söz dizimi${cmake.<KEY-NAME>}
ile kullanılabilir. Örneğin, etkin Yapılandırma Ön Ayarının çıkış dizinine başvurmak için kullanın${cmake.binaryDir}
.Etkin Yapılandırma Hazır Ayarının ortam haritasında ayarlanan tek tek ortam değişkenleri, ve
tasks.vs.json
söz dizimi${env.<VARIABLE-NAME>}
aracılığıyla kullanılabilirlaunch.vs.json
.
ve task.vs.json
dosyalarınızı launch.vs.json
söz dizimi yerine CMakeSettings.json
söz dizimine başvuracak CMakePresets.json
şekilde güncelleştirin. Etkin yapılandırma dosyası olduğunda CMakePresets.json
eski CMakeSettings.json
söz dizimine başvuran makrolar, gelecek bir sürümde kullanım dışı bırakılmıştır. Örneğin, söz dizimini kullandığından, ile yerine etkin Ön Ayarı ${cmake.binaryDir}
Yapılandır'ın CMakePresets.json
${cmake.buildRoot}
çıkış dizinine binaryDir
başvurun.
Sorun giderme
İşler beklendiği gibi çalışmıyorsa birkaç sorun giderme adımı deneyebilirsiniz.
CMakePresets.json
Veya CMakeUserPresets.json
geçersizse, Visual Studio varsayılan davranışına geri döner ve yalnızca varsayılan Ön Ayarları Yapılandır'ı gösterir. Visual Studio IntelliSense bu JSON hatalarının çoğunu yakalamanıza yardımcı olabilir, ancak ön ayara yanlış adla inherits
mı configurePreset
başvurdığınızı anlamayacaktır.
Önceden ayarlanmış dosyalarınızın geçerli olup olmadığını denetlemek için proje dizininizin kökündeki komut satırından komutunu çalıştırın cmake --list-presets
. (CMake 3.20 veya üzeri gereklidir.) Dosyalardan biri geçersizse aşağıdaki hatayı görürsünüz:
CMake Error: Could not read presets from
C:/Users/<user>/source/repos/<project-name>: JSON parse error
Diğer sorun giderme adımları şunlardır:
- Önbelleği silin ve projeyi yeniden yapılandırın (CMake: Önbelleği Sil ve Proje>Proje Adını> Yapılandır).<
- Visual Studio'da klasörü kapatın ve yeniden açın (Dosya>Klasörü Kapat).
.vs
Projenizin kökündeki klasörü silin.
Bir sorun belirlediyseniz, bunu bildirmenin en iyi yolu Visual Studio'nun sağ üst köşesindeki Geri Bildirim Gönder düğmesini seçmektir.
Uzak bağlantılar için günlüğe kaydetmeyi etkinleştirme
Dosyaları uzak bir sisteme bağlarken veya kopyalarken sorun yaşıyorsanız uzak bağlantılar için günlüğe kaydetmeyi etkinleştirebilirsiniz. Daha fazla bilgi için bkz . Uzak bağlantılar için günlüğe kaydetme.
Windows ve Linux için AddressSanitizer'ı etkinleştirme
Visual Studio, hem Windows hem de Linux geliştirmesi için C ve C++ çalışma zamanı bellek hata algılayıcısı olan AddressSanitizer'ı (ASAN) destekler. içindeki addressSanitizerEnabled
CMakeSettings.json
seçeneği AddressSanitizer'ı etkinleştirir. CMakePresets.json
bu davranışı desteklemez.
Bunun yerine, gerekli derleyici ve bağlayıcı bayraklarını kendiniz ayarlayarak AddressSanitizer'ı etkinleştirin ve devre dışı bırakın. Bunların ayarlanması Visual Studio'ya özgü davranışı kaldırır ve aynı CMakePresets.json
dosyanın komut satırından derlemenizi yeniden oluşturabilmesini sağlar.
Hedef için AddressSanitizer'ı etkinleştirmek veya devre dışı bırakmak için aşağıdaki örneği CMakeLists.txt
ekleyebilirsiniz:
option(ASAN_ENABLED "Build this target with AddressSanitizer" ON)
if(ASAN_ENABLED)
if(MSVC)
target_compile_options(<target> PUBLIC /fsanitize=address)
else()
target_compile_options(<target> PUBLIC -fsanitize=address <additional-options>)
target_link_options(<target> PUBLIC -fsanitize=address)
endif()
endif()
bölümünde <additional-options>
gibi "-fno-omit-frame-pointer"
diğer derleme bayrakları listelenir. Linux için AddressSanitizer hakkında daha fazla bilgi için bkz . AddressSanitizer kullanma. MSVC ile AddressSanitizer kullanma hakkında daha fazla bilgi için bkz . Geliştirici komut isteminden AddressSanitizer kullanma.
içindeki launch.vs.json
alanını kullanarak AddressSanitizer'a çalışma zamanı bayrakları ASAN_OPTIONS
geçirme. ASAN_OPTIONS
detect_leaks=0
, LeakSanitizer Visual Studio'da desteklenmediğinden başka çalışma zamanı seçeneği belirtilmediğinde varsayılan olarak ayarlanır.
CMake'i komut satırından veya CI işlem hattından çalıştırma
Visual Studio'da ve komut satırından CMake'yi çağırmak için aynı CMakePresets.json
ve CMakeUserPresets.json
dosyalarını kullanabilirsiniz. CMake ve CTest belgeleri ile --preset
CMake ve CTest çağırmak için en iyi kaynaklardır. CMake sürüm 3.20 veya üzeri gereklidir.
Windows'da komut satırı oluşturucularla derleme yaparken ortamın kaynağını belirleme
CMake komut satırı oluşturucu ile derlemede çağrılmadan önce ortamı yapılandırmak kullanıcıya aittir. Windows üzerinde Ninja ve Visual C++ araç takımıyla derleme yapıyorsanız, derleme sistemini oluşturmak için CMake çağrılmadan önce ortamı ayarlayın. Bunu bağımsız değişkeniyle architecture
çağırarak vcvarsall.bat
yapabilirsiniz. architecture
bağımsız değişkeni, kullanılacak konak ve hedef mimariyi belirtir. Daha fazla bilgi için bkz vcvarsall
. söz dizimi. Visual Studio Oluşturucu ile Linux veya Windows üzerinde derleme yapıyorsanız bu adımı uygulamanız gerekmez.
IDE CMake'yi çağırdığında Visual Studio'nun sizin için aldığı adımla aynıdır. Visual Studio, ve architecture
tarafından toolset
belirtilen konak ve hedef mimari için etkin Yapılandırma Hazır Ayarını ayrıştırıyor. Ardından Visual Studio belirtilen ortamı kaynağından vcvarsall.bat
alır. Ninja ile Windows komut satırından derleme yaparken bu adımı kendiniz uygulamanız gerekir.
vcvarsall.bat
, Visual Studio için Derleme Araçları ile birlikte yüklenir. Varsayılan olarak, vcvarsall.bat
içinde C:\Program Files (x86)\Microsoft Visual Studio\2019\<edition>\VC\Auxiliary\Build
yüklüdür. Komut satırı iş akışını sık kullanıyorsanız öğesine PATH
ekleyebilirsinizvcvarsall.bat
.
Örnek komut satırı iş akışı
X64 derleme araçlarıyla ARM64'i hedeflemek için Ninja kullanan bir CMake projesi yapılandırmak ve derlemek için aşağıdaki komutları kullanabilirsiniz. CMake sürüm 3.20 veya üzeri gereklidir. Dosyanızın CMakePresets.json
bulunduğu dizinden şu komutları çalıştırın:
/path/to/vcvarsall.bat x64_arm64
cmake --list-presets=all .
cmake --preset <configurePreset-name>
cmake --build --preset <buildPreset-name>
Örnek CMakePresets.json
dosya
CMakePresets.json
box2d-lite dosyasındaKi dosyaDayarları Yapılandırma, Derleme Ön Ayarları ve Test Ön Ayarları örnekleri içerir. Bu örnek hakkında daha fazla bilgi için bkz. CMakePresets.json Giriş sunusu. DirectXTK projesinde, bölümünde birçok derleme hedefi configurePresets
gösteren başka bir örnek görebilirsiniz.
Sonraki adımlar
Visual Studio'da CMake projelerini yapılandırma ve hata ayıklama hakkında daha fazla bilgi edinin: