Visual Studio'da C++ derleme sistemleri için Klasör açma desteği
Klasör Aç özelliği Visual Studio 2017 ve sonraki sürümlerde kullanılabilir.
Visual Studio 2017 ve sonraki sürümlerde "Klasör Aç" özelliği, bir kaynak dosya klasörü açmanıza ve IntelliSense, göz atma, yeniden düzenleme, hata ayıklama vb. desteğiyle hemen kodlamaya başlamanıza olanak tanır. Siz dosyaları düzenlerken, oluştururken, taşırken veya silerken, Visual Studio değişiklikleri otomatik olarak izler ve IntelliSense dizinini sürekli güncelleştirir. Hiçbir .sln veya .vcxproj dosyası yüklenmez; gerekirse, basit .json dosyaları aracılığıyla özel görevlerin yanı sıra parametreleri derleyip başlatabilirsiniz. Bu özellik, herhangi bir üçüncü taraf derleme sistemini Visual Studio ile tümleştirmenizi sağlar. Klasör Aç hakkında genel bilgi için bkz . Visual Studio'da projeler veya çözümler olmadan kod geliştirme.
CMake ve Qt
CMake, Visual Studio IDE ile C++ masaüstü iş yükünün bir bileşeni olarak tümleşiktir. CMake iş akışı, bu makalede açıklanan iş akışıyla aynı değildir. CMake kullanıyorsanız bkz . Visual Studio'da CMake projeleri. Qt projeleri oluşturmak için CMake'i veya Visual Studio 2015 veya Visual Studio 2017 için Qt Visual Studio Uzantısı'nı da kullanabilirsiniz.
Diğer derleme sistemleri
Visual Studio IDE'yi ana menüden doğrudan desteklenmeyen bir derleme sistemi veya derleyici araç takımıyla kullanmak için Dosya | öğesini seçin Aç | Klasör veya Ctrl + Shift + Alt + O tuşlarına basın. Kaynak kod dosyalarınızı içeren klasöre gidin. Projeyi oluşturmak, IntelliSense'i yapılandırmak ve hata ayıklama parametrelerini ayarlamak için üç JSON dosyası eklersiniz:
Dosya | Açıklama |
---|---|
CppProperties.json | Gözatma için özel yapılandırma bilgilerini belirtin. Gerekirse bu dosyayı kök proje klasörünüzde oluşturun. (CMake projelerinde kullanılmaz.) |
tasks.vs.json | Özel derleme komutlarını belirtin. Görevleri Yapılandır Çözüm Gezgini bağlam menü öğesi aracılığıyla erişilir. |
launch.vs.json | Hata ayıklayıcısı için komut satırı bağımsız değişkenlerini belirtin. hata ayıklama ve başlatma Ayarlar Çözüm Gezgini bağlam menü öğesi aracılığıyla erişilir. |
CppProperties.json ile kod gezintisi yapılandırma
IntelliSense ve Tanıma Git gibi gözatma davranışlarının düzgün çalışması için Visual Studio'nun hangi derleyiciyi kullandığınızı, sistem üst bilgilerinin nerede olduğunu ve doğrudan açtığınız klasörde (çalışma alanı klasörü) yer almaması durumunda ek ekleme dosyalarının nerede bulunduğunu bilmesi gerekir. Yapılandırma belirtmek için, ana araç çubuğundaki açılan listeden Yapılandırmaları Yönet'i seçebilirsiniz:
Visual Studio aşağıdaki varsayılan yapılandırmaları sunar:
Örneğin x64-Debug seçeneğini belirlerseniz, Visual Studio kök proje klasörünüzde CppProperties.json adlı bir dosya oluşturur:
{
"configurations": [
{
"inheritEnvironments": [
"msvc_x64"
],
"name": "x64-Debug",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"defines": [
"WIN32",
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "windows-msvc-x64"
}
]
}
Bu yapılandırma, Visual Studio x64 Geliştirici Komut İstemi'nin ortam değişkenlerini devralır. Bu değişkenlerden biri de makrodur INCLUDE
ve burada makroyu kullanarak bu değişkene ${env.INCLUDE}
başvurabilirsiniz. özelliği, includePath
Visual Studio'ya IntelliSense için ihtiyaç duyduğu tüm kaynakları nerede arayacağı bildirir. Bu durumda, "INCLUDE ortam değişkeni tarafından belirtilen tüm dizinlere ve ayrıca geçerli çalışma klasörü ağacındaki tüm dizinlere bakın" ifadesi yer alır. name
özelliği, açılan listede görünecek olan addır ve istediğiniz herhangi bir ad olabilir. özelliği, defines
koşullu derleme bloklarıyla karşılaştığında IntelliSense'e ipuçları sağlar. özelliği, intelliSenseMode
derleyici türüne göre bazı ek ipuçları sağlar. MSVC, GCC ve Clang için çeşitli seçenekler mevcuttur.
Dekont
Visual Studio, CppProperties.json dosyasındaki ayarları yoksayıyor gibi görünüyorsa, .gitignore dosyanıza aşağıdaki gibi bir özel durum eklemeyi deneyin: !/CppProperties.json
.
MinGW-w64 için varsayılan yapılandırma
MinGW-W64 yapılandırmasını eklerseniz JSON şu şekilde görünür:
{
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath": [
"${env.INCLUDE}",
"${workspaceRoot}\\**"
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.BIN_ROOT};${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}",
"environment": "mingw_64"
}
]
}
]
}
Bloğu not edin environments
. Ortam değişkenleri gibi davranan ve yalnızca CppProperties.json dosyasında değil, aynı zamanda task.vs.json ve launch.vs.json diğer yapılandırma dosyalarında da kullanılabilen özellikleri tanımlar. Yapılandırma Mingw64
ortamı devralır mingw_w64
ve değerini belirtmek için includePath
özelliğini kullanırINCLUDE
. Gerektiğinde bu dizi özelliğine başka yollar ekleyebilirsiniz.'
intelliSenseMode
özelliği GCC için uygun bir değere ayarlanır. Tüm bu özellikler hakkında daha fazla bilgi için bkz . CppProperties şema başvurusu.
Her şey düzgün çalıştığında, bir türün üzerine geldiğinizde GCC üst bilgilerinden IntelliSense'i görürsünüz:
IntelliSense tanılamasını etkinleştirme
Beklediğiniz IntelliSense'i görmüyorsanız, Araçlar>Seçenekler>Metin Düzenleyicisi>C/C++>Gelişmiş'e gidip Günlüğü true
Etkinleştir'i olarak ayarlayarak sorun giderebilirsiniz. Başlangıç olarak Günlük Düzeyi'ni 5, Günlük Filtreleri'ni 8 olarak ayarlamayı deneyin.
Çıkış, Çıkış Penceresine yöneltilir ve *Çıktıyı Göster: Visual C++ Günlüğü'nü seçtiğinizde görünür. Çıktı, diğer şeylerin dışında, IntelliSense'in kullanmaya çalıştığı yolları da içerir. Yollar CppProperties.json dosyasındakilerle eşleşmiyorsa, klasörü kapatmayı ve önbelleğe alınmış gözatma verilerini içeren .vs alt klasörünü silmeyi deneyin.
tasks.vs.json ile derleme görevleri tanımlama
Derleme betiklerini veya geçerli çalışma alanınızdaki dosyalardaki diğer dış işlemleri doğrudan IDE'de görev olarak çalıştırarak otomatikleştirebilirsiniz. Dosya veya klasöre sağ tıklayıp Görevleri Yapılandır'ı seçerek yeni bir görev yapılandırabilirsiniz.
Bu işlem, Visual Studio'nun kök proje klasörünüzde oluşturduğu .vs klasöründe tasks.vs.json dosyasını oluşturur (veya açar). Bu dosyada herhangi bir rastgele görev tanımlayabilir ve ardından Çözüm Gezgini bağlam menüsünden çağırabilirsiniz. GCC örneğine devam etmek için aşağıdaki kod parçacığı, bir proje oluşturmak için g++.exe dosyasını çağıran tek bir görev olarak eksiksiz bir tasks.vs.json dosyası gösterir. Projenin hello.cpp adlı tek bir dosya içerdiğini varsayalım.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "build hello",
"appliesTo": "/",
"type": "default",
"command": "g++",
"args": [
"-g",
"-o",
"hello",
"hello.cpp"
]
}
]
}
JSON dosyası .vs alt klasörüne yerleştirilir. Bu klasörü görmek için Çözüm Gezgini üst kısmındaki Tüm Dosyaları Göster düğmesine tıklayın. Çözüm Gezgini'da kök düğüme sağ tıklayıp derleme hello'yu seçerek bu görevi çalıştırabilirsiniz. Görev tamamlandığında Çözüm Gezgini'de hello.exe adlı yeni bir dosya görmeniz gerekir.
Birçok görev türü tanımlayabilirsiniz. Aşağıdaki örnekte, tek bir görevi tanımlayan bir tasks.vs.json dosyası gösterilmektedir. taskLabel
bağlam menüsünde görünen adı tanımlar. appliesTo
komutun hangi dosyalarda gerçekleştirilebileceğini tanımlar. command
özelliği, konsolun yolunu (Windows'da cmd.exe) tanımlayan COMSPEC ortam değişkenine başvurur. CppProperties.json veya CMake Ayarlar.json içinde bildirilen ortam değişkenlerine de başvurabilirsiniz. args
özelliği çağrılacak komut satırını belirtir. Makro seçili ${file}
dosyayı Çözüm Gezgini alır. Aşağıdaki örnek, seçili durumdaki .cpp dosyasının dosya adını görüntüler.
{
"version": "0.2.1",
"tasks": [
{
"taskLabel": "Echo filename",
"appliesTo": "*.cpp",
"type": "command",
"command": "${env.COMSPEC}",
"args": ["echo ${file}"]
}
]
}
tasks.vs.json dosyasını kaydettikten sonra, klasördeki herhangi bir .cpp dosyasına sağ tıklayabilir, bağlam menüsünden Echo dosya adı'nı seçebilir ve Çıktı penceresinde görüntülenen dosya adını görebilirsiniz.
Daha fazla bilgi için bkz . Tasks.vs.json şema başvurusu.
launch.vs.json ile hata ayıklama parametrelerini yapılandırma
Programınızın komut satırı bağımsız değişkenlerini ve hata ayıklama yönergelerini özelleştirmek için, Çözüm Gezgini'da yürütülebilir dosyaya sağ tıklayın ve Hata Ayıkla ve Ayarlar Başlat'ı seçin. Bu, mevcut bir launch.vs.json dosyasını açar veya yoksa, en az başlatma ayarına sahip yeni bir dosya oluşturur. İlk olarak, ne tür bir hata ayıklama oturumu yapılandırmak istediğinize karar verilir. MinGw-w64 projesinde hata ayıklamak için MinGW/Cygwin (gdb) için C/C++ Başlatma'yı seçiyoruz. Bu, varsayılan değerler hakkında bazı eğitimli tahminlerle gdb.exe'yi kullanmak için bir başlatma yapılandırması oluşturur. Bu varsayılan değerlerden biri olur MINGW_PREFIX
. Sabit yolu (aşağıda gösterildiği gibi) değiştirebilir veya CppProperties.json dosyasında bir MINGW_PREFIX
özellik tanımlayabilirsiniz:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "cppdbg",
"name": "hello.exe",
"project": "hello.exe",
"cwd": "${workspaceRoot}",
"program": "${debugInfo.target}",
"MIMode": "gdb",
"miDebuggerPath": "c:\\msys64\\usr\\bin\\gdb.exe",
"externalConsole": true
}
]
}
Hata ayıklamayı başlatmak için hata ayıklama açılan listesinde yürütülebilir dosyayı seçin ve ardından yeşil oka tıklayın:
Hata Ayıklayıcısı Başlatılıyor iletişim kutusunu ve ardından programınızı çalıştıran bir dış konsol penceresi görmeniz gerekir.
Daha fazla bilgi için bkz . launch.vs.json şema başvurusu.
Diğer yürütülebilir dosyaları başlatma
Bilgisayarınızdaki herhangi bir yürütülebilir dosya için başlatma ayarlarını tanımlayabilirsiniz. Aşağıdaki örnek 7za'yı başlatır ve bunları JSON dizisine args
ekleyerek ek bağımsız değişkenleri belirtir:
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "default",
"project": "CPP\\7zip\\Bundles\\Alone\\O\\7za.exe",
"name": "7za.exe list content of helloworld.zip",
"args": [ "l", "d:\\sources\\helloworld.zip" ]
}
]
}
Bu dosyayı kaydettiğinizde, hata ayıklama hedefi açılan listesinde yeni yapılandırma görüntülenir ve hata ayıklayıcıyı başlatmak için bu yapılandırmayı seçebilirsiniz. İstediğiniz sayıda yürütülebilir dosya için istediğiniz kadar hata ayıklama yapılandırması oluşturabilirsiniz. Şimdi F5 tuşuna basarsanız, hata ayıklayıcı başlatılır ve önceden ayarlamış olabileceğiniz herhangi bir kesme noktasına isabet eder. Tüm tanıdık hata ayıklayıcı pencereleri ve işlevleri artık kullanılabilir.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin