Microsoft의 Visual Studio Code 편집기는 훌륭하지만 C ++ 프로젝트 빌드를위한 기본 지원은 없습니다.
이를 위해 어떻게 구성합니까?
Microsoft의 Visual Studio Code 편집기는 훌륭하지만 C ++ 프로젝트 빌드를위한 기본 지원은 없습니다.
이를 위해 어떻게 구성합니까?
답변:
C ++ 코드를 컴파일하고 실행하는 훨씬 쉬운 방법이 있으며 구성이 필요하지 않습니다.
Ctrl+Alt+N
하거나를 누른 F1
다음 선택 / 유형을 Run Code
클릭하거나 텍스트 편집기를 마우스 오른쪽 단추로 클릭 한 다음 Run Code
상황에 맞는 메뉴 를 클릭 하면 코드가 컴파일되어 실행되고 출력이 출력 창.또한 원하는 다른 C ++ 컴파일러를 사용하여 settings.json에서 구성을 업데이트 할 수 있습니다 .C ++의 기본 구성은 다음과 같습니다.
"code-runner.executorMap": {
"cpp": "g++ $fullFileName && ./a.out"
}
running blablabla
. 프롬프트도없고 아무것도 없습니다. 코드 실행을 어떻게 중지합니까?
Ctrl+Alt+M
. stdin을 사용하여 데이터를 읽으려면 File
-> Preference
-> Settings
로 이동 하여 설정할 수 "code-runner.runInTerminal": true
있습니다. 자세한 내용은 github.com/formulahendry/vscode-code-runner/issues/91
빌드 작업은 프로젝트마다 다릅니다. 새 프로젝트를 만들려면 Visual Studio Code에서 디렉토리를 엽니 다.
지침에 따라 여기에 언론, Ctrl+ Shift+ P, 유형 Configure Tasks
, 그것을를 선택하고 Enter 키를 누릅니다 Enter.
tasks.json 파일이 열립니다. 다음 빌드 스크립트를 파일에 붙여넣고 저장하십시오.
{
"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
}
}
}
]
}
이제 파일 → 환경 설정 → 키보드 단축키 메뉴로 이동 하여 빌드 작업에 다음 키 바인딩을 추가하십시오.
// Place your key bindings in this file to overwrite the defaults
[
{ "key": "f8", "command": "workbench.action.tasks.build" }
]
이제 F8Makefile 을 누르면 에디터에서 오류가 밑줄로 나타납니다.
ctrl+alt+b
빌드 작업을위한 것입니다.
새로운 2.0.0 tasks.json 버전의 makefile 태스크 예제.
아래의 발췌 부분에서 주석이 도움이되기를 바랍니다.
{
"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
입니다. 자식 수정 제어의 경우 .gitignore
와 같은 패턴 을 사용할 수 !.vscode/tasks.json
있습니다.
다음은 C ++에 VS를 구성하는 방법입니다.
적절한 경로를 MinGW가 설치된 위치로 변경하십시오.
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
}
참고:
"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include"
VS 코드에서 C ++ 프로젝트를 빌드 / 실행하려면 tasks 를 수동으로 구성해야합니다. 작업 공간 폴더의 .vscode 폴더에 있는 파일을 합니다. 열려면 tasks.json 키를 눌러 Ctrl + Shift + P , 및 입력 구성 작업을 하고 눌러 입력 , 그것은 당신을 데려 갈 것이다 tasks.json
여기에 내가 나의 제공하고 tasks.json의 파일이 더 이해하기 위해 몇 가지 의견 파일을, 그것은 구성하기위한 참고 자료로 사용할 수 있습니다 tasks.json을 , 나는 그것이 도움이 될 것입니다 희망
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"
},
]
}
이제 VS 코드 작업 설명서 에서 직접 언급
유형 속성 설명 :
- type : 작업 유형입니다. 사용자 지정 작업의 경우 셸 또는 프로세스 일 수 있습니다. shell이 지정되면 명령은 쉘 명령 (예 : bash, cmd 또는 PowerShell)으로 해석됩니다. 프로세스가 지정된 경우 명령은 실행할 프로세스로 해석됩니다.
프리젠 테이션을 사용하여 터미널의 동작을 제어 할 수 있습니다 tasks.json 속성을 . 다음과 같은 속성을 제공합니다.
reveal : Integrated Terminal 패널을 앞으로 가져올 지 여부를 제어합니다. 유효한 값은 다음과 같습니다.
- always- 패널은 항상 전면으로 가져옵니다. 이것이 기본값입니다
- never- 사용자는보기> 터미널 명령 (Ctrl +`)을 사용하여 터미널 패널을 명시 적으로 전면으로 가져와야합니다.
- silent- 출력에서 오류 및 경고가 스캔되지 않은 경우에만 터미널 패널이 전면으로 가져옵니다.
초점 : 터미널이 입력 포커스를 받고 있는지 여부를 제어합니다. 기본값은 false입니다.
- 에코 : 실행 된 명령이 터미널에서 에코되는지 여부를 제어합니다. 기본값은 true입니다.
- showReuseMessage : "작업에 의해 터미널이 재사용 될 것입니다. 닫으려면 아무 키나 누르십시오"메시지를 표시할지 여부를 제어합니다.
- 패널 : 터미널 인스턴스가 작업 실행간에 공유되는지 여부를 제어합니다. 가능한 값은 다음과 같습니다.
- 공유 : 터미널이 공유되고 다른 작업 실행의 출력이 동일한 터미널에 추가됩니다.
- 전용 : 터미널이 특정 작업 전용입니다. 해당 작업이 다시 실행되면 터미널이 재사용됩니다. 그러나 다른 작업의 출력은 다른 터미널에 표시됩니다.
- new : 해당 작업을 실행할 때마다 새로운 깨끗한 터미널을 사용합니다.
- clear : 이 작업을 실행하기 전에 터미널을 지 울지 여부를 제어합니다. 기본값은 false입니다.
명확한 문서가 부족함에 대한 좌절감없이 github에서 Mac 프로젝트를 만들었습니다 (빌드 및 디버깅 모두).
XCode 및 VSCode Microsoft cpptools 확장자가 필요합니다.
Microsoft가 적절한 문서를 먼저 작성하지 않는 한 Windows와 Linux에서 동일한 작업을 수행하려고합니다.
프로젝트에 CMake 구성이 있으면 VSCode를 설정하는 것이 매우 간단 tasks.json
합니다. 예를 들어 다음과 같이 설정하십시오 .
{
"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
}
}
}
]
}
이는 build
CMake 구성이있는 작업 공간의 루트에 폴더가 있다고 가정 합니다.
VScode에 "CMake build"명령을 추가 하는 CMake 통합 확장 기능 도 있습니다 .
추신! 을 problemMatcher
위한 설정입니다 clang
-builds. 사용하려면 GCC 난 당신이 변경해야 할 생각 fileLocation
에 relative
,하지만 난 이것을 테스트하지 않았습니다.
다음은 g ++ 컴파일러를 사용하여 C ++ 용 VS를 구성하는 방법이며 디버깅 옵션을 포함하여 훌륭하게 작동합니다.
tasks.json 파일
{
"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 파일
{
"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"
}
]
}
VS 코드에 'C / C ++ for Visual Studio Code'확장 프로그램도 설치되어 있습니다.
여기서 기본적인 문제는 C ++ 프로그램을 빌드하고 연결하는 것이 사용중인 빌드 시스템에 크게 의존한다는 것입니다. 플러그인과 사용자 정의 코드의 조합을 사용하여 다음과 같은 고유 한 작업을 지원해야합니다.
편집기에 대한 일반적인 C ++ 언어 지원 이것은 일반적으로 ms-vscode.cpptools를 사용하여 이루어지며, 대부분의 사람들은 빌드 지원과 같은 다른 많은 것들도 처리 할 것으로 기대합니다. 시간을 절약 해 드리겠습니다. 그렇지 않습니다. 그러나 어쨌든 원할 것입니다.
작업을 빌드, 정리 및 재 구축합니다. 이곳에서 여러분이 선택한 빌드 시스템이 엄청나게 커집니다. CMake 및 Autoconf (god help you)와 같은 플러그인을 찾을 수 있지만 Meson 및 Ninja와 같은 것을 사용하는 경우 일부 도우미 스크립트를 작성하고 사용자 정의 "tasks.json"파일을 다음과 같이 구성해야합니다. 이것들을 처리하십시오. Microsoft는 마지막 몇 가지 버전에서 해당 파일에 대한 모든 것을 완전히 변경하여 형식을 완전히 바꾸는 것에 대해 아무 것도 말하지 않고 호출 할 대상과 장소 (예, placeS)로 바꿨습니다. 더군다나, "버전"키를 사용하여 원하는 변형을 지정하기 위해 이전 버전과의 호환성을 유지했습니다. 자세한 내용은 여기를 참조하십시오.
https://code.visualstudio.com/docs/editor/tasks
...하지만 메모는 다음과 충돌합니다.
https://code.visualstudio.com/docs/languages/cpp
경고 : 2.0.0 이하의 "버전"태그와 함께 시작되는 모든 답변은 아래에 있습니다.
내가 지금 가장 가까운 것은 다음과 같습니다. 스크립트에서 많은 노력을 기울 였지만 실제로는 메뉴 항목을 제공하지 않으며 다른 세 가지 명시 적 항목을 만들지 않고 디버그와 릴리스를 선택할 수있는 좋은 방법이 없습니다. 여기. 모든 것을 말하면, 현재 내 .vscode / tasks.json 파일로 허용 할 수있는 것은 다음과 같습니다.
{
// 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
}
}
}
]
}
이론적으로이 파일은 작업 공간 루트에 배치하면 작동하므로 숨겨진 디렉토리 (.vscode)의 파일을 개정 제어 시스템으로 검사하지 않아도됩니다. 나는 그것이 실제로 작동하는 것을 아직 보지 못했다. 테스트하지만 실패하면 .vscode에 넣으십시오. 어느 쪽이든, IDE가 없으면 IDE가 망할 것입니다. (예, 이것은 현재 .vscode를 서브 버전으로 검사해야한다는 것을 의미합니다. 이는 좋지 않습니다.) 내 빌드 스크립트 (표시되지 않음)는 내 경우, meson 및 그 안에 빌드하십시오 (내 경우에는 닌자를 사용하여).
업데이트 된 VS 코드를 사용하면 다음과 같은 방식으로 수행 할 수 있습니다.
( Ctrl+ P)를 누르고 다음을 입력하십시오.
ext install cpptools
폴더 ( Ctrl+ K& Ctrl+ O)를 열고 확장자가 .cpp (예 : hello.cpp ) 인 폴더 안에 새 파일을 만듭니다 .
코드를 입력하고 저장을 누르십시오.
( Ctrl+ Shift+를 P누르고 입력 Configure task runner
한 다음 other
목록 하단에서 선택 하십시오.
이름이 build.bat 인 동일한 폴더에 배치 파일을 작성하고 파일 본문에 다음 코드를 포함하십시오.
@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%
다음과 같이 task.json 파일을 편집 하고 저장하십시오 .
{
// 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"
}
( Ctrl+ Shift+ B를 눌러 빌드 작업을 실행 하면 프로젝트 의 .obj 및 .exe 파일 이 생성됩니다 .
프로젝트를 디버깅 F5하려면 C ++ (Windows)를 누르고 선택하십시오 .
에서 launch.json 파일, 다음 줄을 편집 저장 파일 :
"program": "${workspaceRoot}/hello.exe",
을 누르십시오 F5.
2.0.0
Visual Studio Code, https://gist.github.com/akanshgulati/56b4d469523ec0acd9f6f59918a9e454에 대한 버전 작업 이있는이 최신 요점을 참조 할 수 있습니다.
작업을 업데이트하지 않고도 각 파일을 쉽게 컴파일하고 실행할 수 있습니다. 일반적이며 입력 항목을위한 터미널을 엽니 다.
확장 사용할 수 코드 러너를 바로 가기 키를 사용하여 오른쪽 상단 ANS에 재생 아이콘과 코드를 실행하려면 다음 Ctrl+Alt+N
과 중단 Ctrl+Alt+M
. 그러나 기본적으로 프로그램의 출력 만 표시하지만 입력을 받으려면 몇 가지 단계를 수행해야합니다.
Ctrl +를 누른 다음 설정 메뉴가 열리고 확장> 코드 구성 실행 이 속성을 아래로 스크롤하고 설정에서 편집을 찾으 십시오 .json 그것을 클릭하고 사이트에 다음 코드를 추가하십시오.
{
"code-runner.runInTerminal": true
}
이제 Microsoft의 C / C ++ 언어 확장이 있습니다. "빠른 열기"( Ctrl+ p)로 이동하여 다음을 입력하여 설치할 수 있습니다 .
ext install cpptools
여기에서 읽을 수 있습니다.
https://blogs.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/
2016 년 5 월 기준으로 매우 기본입니다.