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, özel görevlerin yanı sıra basit .json dosyaları aracılığıyla parametreleri derleyebilir ve 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:

Yapılandırmaları yönet seçimini gösteren araç çubuğundaki yapılandırma açılan menüsü.

Visual Studio aşağıdaki varsayılan yapılandırmaları sunar:

Varsayılan yapılandırmaların listesini gösteren CppProperties'e Yapılandırma Ekle iletişim kutusu: x86-Debug, x86-Release, x64-Debug, x64-Release vb.

Ö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.

Not

Visual Studio CppProperties.json ayarları yoksayıyor gibi görünüyorsa, .gitignore dosyanıza şu şekilde 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, 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:

Üst bilgi belgelerini gösteren GCC IntelliSense açılır penceresinin ekran görüntüsü.

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.

Tanılama günlüğü ayarlarını gösteren Seçenekler iletişim kutusu.

Çı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'dakilerle 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.

Görevleri Yapılandır komutunu gösteren Çözüm Gezgini kısayol menüsü.

Bu, 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ığı, proje oluşturmak için g++.exe çağıran tek bir görev olarak tam 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'da hello.exe 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, konsolunun yolunu tanımlayan COMSPEC ortam değişkenine (Windows'da cmd.exe) başvurur. Ayrıca CppProperties.json veya CMakeSettings.json 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 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 . şema başvurusu Tasks.vs.json.

hata ayıklama parametrelerini launch.vs.json ile 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 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 içinde 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ıyı başlatmak için yeşil oku gösteren araç çubuğu hata ayıklama hedefi açılan menüsü.

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 . şema başvurusu launch.vs.json.

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.