Microsoft'un Visual Studio Kod düzenleyicisi oldukça güzel, ancak C ++ projeleri oluşturmak için varsayılan bir desteği yok.
Bunu yapmak için nasıl yapılandırabilirim?
Microsoft'un Visual Studio Kod düzenleyicisi oldukça güzel, ancak C ++ projeleri oluşturmak için varsayılan bir desteği yok.
Bunu yapmak için nasıl yapılandırabilirim?
Yanıtlar:
C ++ kodunu derlemenin ve çalıştırmanın çok daha kolay bir yolu var, yapılandırmaya gerek yok:
Ctrl+Alt+N
veya tuşuna F1
basıp seçin / yazın Run Code
veya Metin Düzenleyicisi'ne sağ tıklayın ve ardından Run Code
içerik menüsünü tıklayın , kod derlenecek ve çalıştırılacak ve çıktı Çıktı Penceresi.Ayrıca, farklı C ++ derleyicilerini kullanarak config.json'daki yapılandırmayı istediğiniz gibi güncelleyebilirsiniz, C ++ için varsayılan yapılandırma aşağıdaki gibidir:
"code-runner.executorMap": {
"cpp": "g++ $fullFileName && ./a.out"
}
running blablabla
. İstem yok, hiçbir şey. Kodun çalışmasını nasıl durdurabilirim?
Ctrl+Alt+M
. Verileri okumak için stdin'i kullanmak üzere ayarlamak için File
-> Preference
-> öğesine gidebilirsiniz . Daha fazla bilgi için github.com/formulahendry/vscode-code-runner/issues/91Settings
"code-runner.runInTerminal": true
Derleme görevleri projeye özgüdür. Yeni bir proje oluşturmak için Visual Studio Code'da bir dizin açın.
Buradaki talimatları uygulayarak Ctrl+ Shift+ tuşlarına basın P, yazın Configure Tasks
, seçin ve tuşuna basın Enter.
Task.json dosyası açılacaktır. Aşağıdaki derleme dosyasını dosyaya yapıştırın ve kaydedin:
{
"version": "0.1.0",
"command": "make",
"isShellCommand": true,
"tasks": [
{
"taskName": "Makefile",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "always",
// Pass 'all' as the build target
"args": ["all"],
// Use the standard less compilation problem matcher.
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
Şimdi Dosya → Tercihler → Klavye Kısayolları menüsüne gidin ve oluşturma görevi için aşağıdaki anahtar bağlamayı ekleyin:
// Place your key bindings in this file to overwrite the defaults
[
{ "key": "f8", "command": "workbench.action.tasks.build" }
]
Şimdi tuşuna bastığınızda F8Makefile yürütülür ve editörde hataların altı çizilir.
ctrl+alt+b
oluşturma görevi içindir.
Yeni 2.0.0 görevleri için bir makefile görev örneği. Json sürümü.
Aşağıdaki yorumda bazı yorumların yararlı olacağını umuyorum.
{
"version": "2.0.0",
"tasks": [
{
"label": "<TASK_NAME>",
"type": "shell",
"command": "make",
// use options.cwd property if the Makefile is not in the project root ${workspaceRoot} dir
"options": {
"cwd": "${workspaceRoot}/<DIR_WITH_MAKEFILE>"
},
// start the build without prompting for task selection, use "group": "build" otherwise
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
// arg passing example: in this case is executed make QUIET=0
"args": ["QUIET=0"],
// Use the standard less compilation problem matcher.
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["absolute"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
.vscode
. Git revizyon kontrolü için bir olasılık, .gitignore
benzer bir desen için kullanmaktır !.vscode/tasks.json
.
İşte VS benim C ++ için nasıl yapılandırılmış
MinGW'nizin kurulu olduğu yere uygun yolları değiştirdiğinizden emin olun
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x86",
"program": "${workspaceRoot}\\${fileBasename}.exe",
"miDebuggerPath":"C:\\mingw-w64\\bin\\gdb.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"externalConsole": true,
"preLaunchTask": "g++"
}
]
}
tasks.json
{
"version": "0.1.0",
"command": "g++",
"args": ["-g","-std=c++11","${file}","-o","${workspaceRoot}\\${fileBasename}.exe"],
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceRoot}",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1",
"C:/mingw-w64/x86_64-w64-mingw32/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"__GNUC__=6",
"__cdecl=__attribute__((__cdecl__))"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"${workspaceRoot}",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1",
"C:/mingw-w64/x86_64-w64-mingw32/include"
]
},
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
],
"version": 3
}
Referans:
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include"
VS kodu C ++ projeleri oluşturmak / çalıştırmak için, el ile çalışma alanı klasöründe .vscode klasöründe olan task.json dosyasını yapılandırmanız gerekir . Açık için tasks.json basın ctrl + shift + P ve yazın yapılandırma görevleri ve basın girmek , bu götürecektir tasks.json
Burada , dosyayı daha anlaşılır hale getirmek için bazı yorumlarla benim görevler.json dosyasını sağlıyorum , görevleri.json yapılandırmak için bir referans olarak kullanılabilir , umarım faydalı olacaktır
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build & run", //It's name of the task , you can have several tasks
"type": "shell", //type can be either 'shell' or 'process' , more details will be given below
"command": "g++",
"args": [
"-g", //gnu debugging flag , only necessary if you want to perform debugging on file
"${file}", //${file} gives full path of the file
"-o",
"${workspaceFolder}\\build\\${fileBasenameNoExtension}", //output file name
"&&", //to join building and running of the file
"${workspaceFolder}\\build\\${fileBasenameNoExtension}"
],
"group": {
"kind": "build", //defines to which group the task belongs
"isDefault": true
},
"presentation": { //Explained in detail below
"echo": false,
"reveal": "always",
"focus": true,
"panel": "shared",
"clear": false,
"showReuseMessage": false
},
"problemMatcher": "$gcc"
},
]
}
Şimdi, doğrudan VS kodu görevleri belgelerinden belirtmek
type özelliği açıklaması :
- type : Görevin türü. Özel bir görev için, bu kabuk veya işlem olabilir. Kabuk belirtilirse, komut bir kabuk komutu olarak yorumlanır (örneğin: bash, cmd veya PowerShell). İşlem belirtilirse, komut yürütülecek bir işlem olarak yorumlanır.
Terminalin davranışı, task.json içindeki sunum özelliği kullanılarak kontrol edilebilir . Aşağıdaki özellikleri sunar:
ortaya : Entegre Terminal panelinin öne getirilip getirilmediğini kontrol eder. Geçerli değerler:
- always - Panel her zaman öne çıkarılır. Bu varsayılan
- asla - Kullanıcı Görünüm> Terminal komutunu (Ctrl + `) kullanarak terminal panelini açıkça öne getirmelidir.
- sessiz - Terminal paneli yalnızca, çıktı hatalar ve uyarılar için taranmazsa öne çıkarılır.
focus : Terminalin giriş odağı alıp almadığını kontrol eder. Varsayılan, false değeridir.
- echo : Yürütülen komutun terminalde yankılanıp yanılmadığını kontrol eder. Varsayılan değer true.
- showReuseMessage : "Terminal görevler tarafından yeniden kullanılacak, kapatmak için herhangi bir tuşa basın" mesajının gösterilip gösterilmeyeceğini denetler.
- panel : Terminal örneğinin görev çalıştırmaları arasında paylaşılıp paylaşılmadığını denetler. Olası değerler:
- paylaşılan : Terminal paylaşılır ve diğer görev çalışmalarının çıktıları aynı terminale eklenir.
- özel : Terminal belirli bir göreve adanmıştır. Bu görev yeniden yürütülürse, terminal yeniden kullanılır. Ancak, farklı bir görevin çıktısı farklı bir terminalde sunulur.
- Yeni : bu görevin her yürütme yeni temiz terminali kullanıyor.
- clear: Bu görev yürütülmeden önce terminalin silinip temizlenmeyeceğini denetler. Varsayılan, false değeridir.
Açık dokümantasyon eksikliğindeki hayal kırıklığı dışında, github üzerinde sadece çalışması gereken bir Mac projesi oluşturdum (hem bina hem de hata ayıklama):
XCode ve VSCode Microsoft cpptools uzantısını gerektirdiğini unutmayın.
Aynı şeyi Windows ve linux için de yapmayı planlıyorum (Microsoft önce iyi belgeler yazmadıkça ...).
Her şeyden önce, uzantılara git (Ctrl + Shift + X) ve 2 uzantı yükleyin:
Ardından, VS Kodunu yeniden yükleyin ve programınızın çıkış terminalinde çalıştırdığı sağ köşenin üstündeki bir yürüt düğmesini seçin. Çıktıyı Ctrl + Alt + N ile görebilirsiniz. Diğer özellikleri değiştirmek için kullanıcı ayarlarına gidin.
Projenizde bir CMake yapılandırması varsa, VSCode'u kurmak oldukça kolaydır, örneğin tasks.json
aşağıdaki gibi kurulum :
{
"version": "0.1.0",
"command": "sh",
"isShellCommand": true,
"args": ["-c"],
"showOutput": "always",
"suppressTaskName": true,
"options": {
"cwd": "${workspaceRoot}/build"
},
"tasks": [
{
"taskName": "cmake",
"args": ["cmake ."]
},
{
"taskName": "make",
"args" : ["make"],
"isBuildCommand": true,
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
Bu build
, çalışma alanının kökünde CMake yapılandırmasına sahip bir klasör olduğunu varsayar .
VScode'a "CMake derleme" komutu ekleyen bir CMake entegrasyon uzantısı da var.
PS! problemMatcher
İçin kurgusunda clang
-builds. Kullanmak için GCC ben değiştirmeniz gereken inanmak fileLocation
için relative
, ama bu test etmedim.
İşte nasıl VS ++ için g ++ derleyici kullanarak yapılandırılmış ve hata ayıklama seçenekleri de dahil olmak üzere harika çalışıyor:
task.json dosyası
{
"version": "0.1.0",
"command": "g++",
"isShellCommand": true,
// compiles and links with debugger information
"args": ["-g", "-o", "hello.exe", "hello.cpp"],
// without debugger information
// "args": ["-o", "hello.exe", "hello.cpp"],
"showOutput": "always"
}
launch.json dosyası
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (Windows)",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/hello.exe",
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe",
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"externalConsole": false,
"visualizerFile": "${workspaceRoot}/my.natvis"
}
]
}
Ayrıca VS Kodu yüklü 'Visual Studio Code için C / C ++' uzantısı var
Burada temel sorun, bir C ++ programı oluşturmak ve bağlamak büyük ölçüde kullanılan derleme sistemine bağlıdır. Bazı eklenti ve özel kod kombinasyonlarını kullanarak aşağıdaki farklı görevleri desteklemeniz gerekir:
Editör için genel C ++ dil desteği. Bu genellikle ms-vscode.cpptools kullanılarak yapılır, çoğu insan da yapı desteği gibi diğer birçok şeyi de ele almayı bekler. Size biraz zaman kazandıracağım: öyle değil. Ancak, muhtemelen yine de isteyeceksiniz.
Görevler oluşturun, temizleyin ve yeniden oluşturun. Yapı sistemi seçiminiz büyük bir anlaşma haline gelir. CMake ve Autoconf (tanrı size yardımcı olur) gibi şeyler için eklentiler bulacaksınız, ancak Meson ve Ninja gibi bir şey kullanıyorsanız, bazı yardımcı komut dosyaları yazmanız ve özel bir "görevleri.json" dosyası yapılandırmanız gerekir. Bunları halledin. Microsoft, son birkaç sürümde bu dosya hakkında her şeyi, tam olarak değiştirilmesi gereken yere ve formatı tamamen değiştirecek bir şey söylemek için gidebileceği yerlere (evet, placeS) kadar tamamen değiştirdi. Daha da kötüsü, SORT OF geriye doğru uyumluluğu koruduklarından, istediğiniz sürümü belirtmek için "sürüm" tuşunu kullandığınızdan emin olun. Ayrıntıları burada görebilirsiniz:
https://code.visualstudio.com/docs/editor/tasks
... ancak şunlarla çakışmaya dikkat edin:
https://code.visualstudio.com/docs/languages/cpp
UYARI: AŞAĞIDAKİ TÜM CEVAPLARDA, 2.0.0 AŞAĞIDAKİ "VERSİYON" ETİKETİ İLE BAŞLADIĞI BİR ŞEY OBSOLET'tir.
İşte şu an sahip olduğum en yakın şey. Komut dosyalarına yapılan ağır kaldırma işlemlerinin çoğunu başlattığımı unutmayın, bu gerçekten yaşayabileceğim herhangi bir menü girişi vermiyor ve hata ayıklama ve serbest bırakma arasında yalnızca üç açık giriş yapmadan seçim yapmanın iyi bir yolu yok. buraya. Tüm bu söylenen ile, şu anda benim .vscode / görevleri.json dosya olarak tolere edebilirsiniz:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build project",
"type": "shell",
"command": "buildscripts/build-debug.sh",
"args": [],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
// Reveal the output only if unrecognized errors occur.
"echo": true,
"focus": false,
"reveal": "always",
"panel": "shared"
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"label": "rebuild project",
"type": "shell",
"command": "buildscripts/rebuild-debug.sh",
"args": [],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
// Reveal the output only if unrecognized errors occur.
"echo": true,
"focus": false,
"reveal": "always",
"panel": "shared"
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"label": "clean project",
"type": "shell",
"command": "buildscripts/clean-debug.sh",
"args": [],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
// Reveal the output only if unrecognized errors occur.
"echo": true,
"focus": false,
"reveal": "always",
"panel": "shared"
},
// Use the standard MS compiler pattern to detect errors, warnings and infos
"options": {
"cwd": "${workspaceRoot}"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}
Teoride, bu dosyanın çalışma alanı köküne koyarsanız çalışması beklenir, böylece gizli dizinlerdeki (.vscode) dosyaları revizyon kontrol sisteminize kontrol edemezsiniz. Bunun gerçekten işe yaradığını henüz görmedim; test edin, ancak başarısız olursa .vscode içine koyun. Her iki durumda da, IDE zaten orada değilse kaltak olacaktır. (Evet, şu anda bu, .vscode'u alt sürüme kontrol etmeye zorlandığım anlamına geliyor, ki bu mutlu değilim.) Yapı komut dosyalarının (gösterilmiyor), benim durumum, meson ve onun içinde inşa (benim durumumda ninja kullanarak).
Güncellenmiş bir VS Kodu ile bunu aşağıdaki şekilde yapabilirsiniz:
( Ctrl+ P) Tuşuna basın ve şunu yazın:
ext install cpptools
Bir klasör açın ( Ctrl+ K& Ctrl+ O) ve klasörün içinde .cpp (ör: hello.cpp ) uzantılı yeni bir dosya oluşturun :
Kodunuzu yazın ve kaydet'e basın.
( Ctrl+ Shift+ Tuşlarına basın Pve yazın Configure task runner
ve ardından other
listenin en altında öğesini seçin .
Build.bat adıyla aynı klasörde bir toplu iş dosyası oluşturun ve dosyanın gövdesine aşağıdaki kodu ekleyin:
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
set compilerflags=/Od /Zi /EHsc
set linkerflags=/OUT:hello.exe
cl.exe %compilerflags% hello.cpp /link %linkerflags%
Düzenleme task.json dosyası aşağıdaki gibi ve buna kaydet :
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "build.bat",
"isShellCommand": true,
//"args": ["Hello World"],
"showOutput": "always"
}
Derleme görevini çalıştırmak için ( Ctrl+ Shift+ Bdüğmesine basın. Bu , proje için .obj ve .exe dosyalarını oluşturur.
Projede hata ayıklamak için, C ++ 'ı (Windows) tıklayınF5 ve seçin .
Gelen launch.json dosyasında aşağıdakiler hat ve düzenleme tasarruf dosyasında:
"program": "${workspaceRoot}/hello.exe",
Vur F5.
2.0.0
Visual Studio Code, https://gist.github.com/akanshgulati/56b4d469523ec0acd9f6f59918a9e454 için bir sürüm görevi olan bu son özdeme başvurabilirsiniz.
Görevi güncellemeden her dosyayı kolayca derleyebilir ve çalıştırabilirsiniz. Geneldir ve giriş girişleri için terminali açar.
Oynatma simgesi üstte kod çalıştırmak için Extension Code Runner'ı , kısayol tuşu ile sağ ve: tuşlarını Ctrl+Alt+N
kullanarak iptal edebilirsiniz Ctrl+Alt+M
. Ancak varsayılan olarak yalnızca program çıktısını gösterir, ancak girdi almak için bazı adımları izlemeniz gerekir:
Ctrl + ve ardından ayarlar menüsü açılır ve Uzantılar> Kod Yapılandırmasını Çalıştırın özelliklerini aşağı kaydırın ve ayarlarda Düzenle'yi bulun. Json üzerine tıklayın ve aşağıdaki kodu ekleyin:
{
"code-runner.runInTerminal": true
}
Artık Microsoft'tan bir C / C ++ dil uzantısı var. "Hızlı açılan" şeye ( Ctrl+ p) gidip şunu yazarak yükleyebilirsiniz :
ext install cpptools
Burada okuyabilirsiniz:
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/
Mayıs 2016 itibariyle çok basit.