Visual Studio Code with WSL로 atcoder-cli를 사용하면서 디버깅도 할 수 있는 환경 구축
소개
파일 구조로서는, C드라이브 바로 아래에 code라고 하는 폴더를 두고, 그 속에 AtCoder라고 하는 폴더를 두고, 한층 더 그 안에 대략적인 분류를 했습니다. 예를 들어 abc086의 a 문제의 폴더를 path를 Linux 스타일로 쓰면,
/mnt/c/code/atcoder/abc051-100/abc086/a
같아요. 내가 만든 거친 분류는 다음과 같습니다.
다만, abc086나 그 이하의 계층은 atcoder-cli(후술)가 자동으로 만들어 주기 때문에 스스로 만들지 않아도 괜찮습니다.
VSCode 및 WSL 배포
이 페이지대로 설정합니다. 리눅스는 맛있는 상태이므로 WSL-Remote는 사용하지 않는 설정으로 만들었습니다.
atcoder-cli 도입
이 페이지와 같이 설정합니다. 템플릿의 설정은 해 두면 즐거운 것 같아서 해 두었습니다.
디버깅 가능한 환경 구축
먼저 boost를 wsl 환경에서 install합니다.
$ brew install boost
굉장히 시간이 걸리고 실패도 하는 것 같아서 잘 가지 않을 때는 몇번이나 하면서 기장에 기다립니다.
그런 다음 이 페이지와 같이 설정합니다. , , 하지만, 여기에서 왠지 전혀 잘 가지 않았습니다 (WSL-Remote를 사용하는 전제이기 때문에 잘 가지 않았던 것일까?). 여러가지 시행착오해서 아래와 같이 json 파일을 재작성하면 나름대로 잘 움직였습니다.
c_cpp_properties.json → 그대로
tasks.json{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
//"options": {
// "shell": {
// "executable": "/mnt/c/windows/system32/wsl.exe",
// }
//},
"command": "g++",
"args": [
"-std=gnu++1y",
"-g",
"-O0",
"-I/opt/boost/gcc/include",
"-L/opt/boost/gcc/lib",
"-o",
"${fileDirname}/a.out",
"${file}",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Bash on Windows Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/a.out",
"pipeTransport": {
"debuggerPath": "/usr/bin/gdb",
"pipeProgram": "/mnt/c/windows/system32/bash.exe",
"pipeArgs": ["-c"],
"pipeCwd": "/"
},
"cwd": "${fileDirname}",
"args": [
"<",
"${fileDirname}/test/sample-1.in",
],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"sourceFileMap": {
"${workspaceFolder}": "${workspaceFolder}"
},
}
]
}
tasks.json에 대해서는, 우선 "executable"을 linux풍의 path로 변경해, 인수 "args"중, 출력처를 그 파일의 디렉토리로 변경했습니다. 이제 atcoder-cli와 함께 사용할 수 있습니다.
launch.json에 대해서는 거의 리눅스 스타일의 path로 변경했습니다. 또한 tasks.json에 따라 출력 파일의 경로도 변경했으며 입력 파일은 online-judge-tools가 떨어진 sample-1.in을 사용합니다. sample-1.in을 만지면 입력을 스스로 설정할 수 있습니다 (물론 그 파일로 oj t하면 WA가 됩니다만).
주의점
매번 우분투에서 시작할 때
$ cd /mnt/c/code/atcoder
$ code .
라고!
그렇지 않으면 VSCode가 tasks.json과 launch.json을 인식하지 못하는 것 같습니다. (어쩌면 설정으로 어떻게 될지도…? 자세한 분 가르쳐 주세요.)
매번 우분투에서 열리는 것이 번거로울 때는 이런 식으로 VSCode에 프로젝트를 고정시켜 두면 좋다고 생각합니다.
그런 다음 파일이 많아지고 main.cpp를 탐색기에서 여는 것이 귀찮은 경우,
/mnt/c/code/atcoder/abc051-100/abc051/a$ code main.cpp
같은 느낌으로 VSCode terminal에서 열면 편할 수 있습니다.
아무래도 좋은 것 (자신용)
네트워크 폴더는 google drive에 자동으로 백업할 수 없으므로 C 드라이브 바로 아래에 code를 두고 WSL에서 조작하는 형태로 했습니다. git 라든지 사용하면 잘 할 수 있습니까?
Reference
이 문제에 관하여(Visual Studio Code with WSL로 atcoder-cli를 사용하면서 디버깅도 할 수 있는 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lndclt/items/ff65c3682e1ca6fb5116
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 페이지대로 설정합니다. 리눅스는 맛있는 상태이므로 WSL-Remote는 사용하지 않는 설정으로 만들었습니다.
atcoder-cli 도입
이 페이지와 같이 설정합니다. 템플릿의 설정은 해 두면 즐거운 것 같아서 해 두었습니다.
디버깅 가능한 환경 구축
먼저 boost를 wsl 환경에서 install합니다.
$ brew install boost
굉장히 시간이 걸리고 실패도 하는 것 같아서 잘 가지 않을 때는 몇번이나 하면서 기장에 기다립니다.
그런 다음 이 페이지와 같이 설정합니다. , , 하지만, 여기에서 왠지 전혀 잘 가지 않았습니다 (WSL-Remote를 사용하는 전제이기 때문에 잘 가지 않았던 것일까?). 여러가지 시행착오해서 아래와 같이 json 파일을 재작성하면 나름대로 잘 움직였습니다.
c_cpp_properties.json → 그대로
tasks.json{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
//"options": {
// "shell": {
// "executable": "/mnt/c/windows/system32/wsl.exe",
// }
//},
"command": "g++",
"args": [
"-std=gnu++1y",
"-g",
"-O0",
"-I/opt/boost/gcc/include",
"-L/opt/boost/gcc/lib",
"-o",
"${fileDirname}/a.out",
"${file}",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Bash on Windows Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/a.out",
"pipeTransport": {
"debuggerPath": "/usr/bin/gdb",
"pipeProgram": "/mnt/c/windows/system32/bash.exe",
"pipeArgs": ["-c"],
"pipeCwd": "/"
},
"cwd": "${fileDirname}",
"args": [
"<",
"${fileDirname}/test/sample-1.in",
],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"sourceFileMap": {
"${workspaceFolder}": "${workspaceFolder}"
},
}
]
}
tasks.json에 대해서는, 우선 "executable"을 linux풍의 path로 변경해, 인수 "args"중, 출력처를 그 파일의 디렉토리로 변경했습니다. 이제 atcoder-cli와 함께 사용할 수 있습니다.
launch.json에 대해서는 거의 리눅스 스타일의 path로 변경했습니다. 또한 tasks.json에 따라 출력 파일의 경로도 변경했으며 입력 파일은 online-judge-tools가 떨어진 sample-1.in을 사용합니다. sample-1.in을 만지면 입력을 스스로 설정할 수 있습니다 (물론 그 파일로 oj t하면 WA가 됩니다만).
주의점
매번 우분투에서 시작할 때
$ cd /mnt/c/code/atcoder
$ code .
라고!
그렇지 않으면 VSCode가 tasks.json과 launch.json을 인식하지 못하는 것 같습니다. (어쩌면 설정으로 어떻게 될지도…? 자세한 분 가르쳐 주세요.)
매번 우분투에서 열리는 것이 번거로울 때는 이런 식으로 VSCode에 프로젝트를 고정시켜 두면 좋다고 생각합니다.
그런 다음 파일이 많아지고 main.cpp를 탐색기에서 여는 것이 귀찮은 경우,
/mnt/c/code/atcoder/abc051-100/abc051/a$ code main.cpp
같은 느낌으로 VSCode terminal에서 열면 편할 수 있습니다.
아무래도 좋은 것 (자신용)
네트워크 폴더는 google drive에 자동으로 백업할 수 없으므로 C 드라이브 바로 아래에 code를 두고 WSL에서 조작하는 형태로 했습니다. git 라든지 사용하면 잘 할 수 있습니까?
Reference
이 문제에 관하여(Visual Studio Code with WSL로 atcoder-cli를 사용하면서 디버깅도 할 수 있는 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lndclt/items/ff65c3682e1ca6fb5116
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 boost를 wsl 환경에서 install합니다.
$ brew install boost
굉장히 시간이 걸리고 실패도 하는 것 같아서 잘 가지 않을 때는 몇번이나 하면서 기장에 기다립니다.
그런 다음 이 페이지와 같이 설정합니다. , , 하지만, 여기에서 왠지 전혀 잘 가지 않았습니다 (WSL-Remote를 사용하는 전제이기 때문에 잘 가지 않았던 것일까?). 여러가지 시행착오해서 아래와 같이 json 파일을 재작성하면 나름대로 잘 움직였습니다.
c_cpp_properties.json → 그대로
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
//"options": {
// "shell": {
// "executable": "/mnt/c/windows/system32/wsl.exe",
// }
//},
"command": "g++",
"args": [
"-std=gnu++1y",
"-g",
"-O0",
"-I/opt/boost/gcc/include",
"-L/opt/boost/gcc/lib",
"-o",
"${fileDirname}/a.out",
"${file}",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Bash on Windows Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/a.out",
"pipeTransport": {
"debuggerPath": "/usr/bin/gdb",
"pipeProgram": "/mnt/c/windows/system32/bash.exe",
"pipeArgs": ["-c"],
"pipeCwd": "/"
},
"cwd": "${fileDirname}",
"args": [
"<",
"${fileDirname}/test/sample-1.in",
],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"sourceFileMap": {
"${workspaceFolder}": "${workspaceFolder}"
},
}
]
}
tasks.json에 대해서는, 우선 "executable"을 linux풍의 path로 변경해, 인수 "args"중, 출력처를 그 파일의 디렉토리로 변경했습니다. 이제 atcoder-cli와 함께 사용할 수 있습니다.
launch.json에 대해서는 거의 리눅스 스타일의 path로 변경했습니다. 또한 tasks.json에 따라 출력 파일의 경로도 변경했으며 입력 파일은 online-judge-tools가 떨어진 sample-1.in을 사용합니다. sample-1.in을 만지면 입력을 스스로 설정할 수 있습니다 (물론 그 파일로 oj t하면 WA가 됩니다만).
주의점
매번 우분투에서 시작할 때
$ cd /mnt/c/code/atcoder
$ code .
라고!
그렇지 않으면 VSCode가 tasks.json과 launch.json을 인식하지 못하는 것 같습니다. (어쩌면 설정으로 어떻게 될지도…? 자세한 분 가르쳐 주세요.)
매번 우분투에서 열리는 것이 번거로울 때는 이런 식으로 VSCode에 프로젝트를 고정시켜 두면 좋다고 생각합니다.
그런 다음 파일이 많아지고 main.cpp를 탐색기에서 여는 것이 귀찮은 경우,
/mnt/c/code/atcoder/abc051-100/abc051/a$ code main.cpp
같은 느낌으로 VSCode terminal에서 열면 편할 수 있습니다.
아무래도 좋은 것 (자신용)
네트워크 폴더는 google drive에 자동으로 백업할 수 없으므로 C 드라이브 바로 아래에 code를 두고 WSL에서 조작하는 형태로 했습니다. git 라든지 사용하면 잘 할 수 있습니까?
Reference
이 문제에 관하여(Visual Studio Code with WSL로 atcoder-cli를 사용하면서 디버깅도 할 수 있는 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lndclt/items/ff65c3682e1ca6fb5116
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ cd /mnt/c/code/atcoder
$ code .
/mnt/c/code/atcoder/abc051-100/abc051/a$ code main.cpp
네트워크 폴더는 google drive에 자동으로 백업할 수 없으므로 C 드라이브 바로 아래에 code를 두고 WSL에서 조작하는 형태로 했습니다. git 라든지 사용하면 잘 할 수 있습니까?
Reference
이 문제에 관하여(Visual Studio Code with WSL로 atcoder-cli를 사용하면서 디버깅도 할 수 있는 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lndclt/items/ff65c3682e1ca6fb5116텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)