Share via


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:

Configuration dropdown on the toolbar showing the Manage configurations selection.

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

Add Configuration to CppProperties dialog, showing list of Default configurations: x86-Debug, x86-Release, x64-Debug, x64-Release, and so on.

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

Screenshot of a GCC IntelliSense pop-up showing the header documentation.

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.

Options dialog, showing the Diagnostic logging settings.

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

Solution Explorer shortcut menu showing the Configure Tasks command.

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:

Toolbar debug target dropdown, showing the green arrow to start the debugger.

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.