나만의 작은 도서관
VSCode에서 C++을 사용해보자(Window) 3 - PS용 익스텐션 및 bits/stdc++ 세팅 본문
VSCode에서 C++을 사용해보자(Window) 3 - PS용 익스텐션 및 bits/stdc++ 세팅
pledge24 2024. 6. 10. 00:34개요
이전 글까지의 내용은 C++을 VSCode에서 사용할 수 있도록 세팅하는 것이었다. 이 글은 거기에 더해 PS를 위한 여러가지 세팅을 정리해둔 글로, 다른 블로그에서도 한 번씩 다루는 내용을 내 입맛대로 정리한 글이다. 긴말 없이 바로 시작하겠다.
.exe파일 경로 설정 (2025/02/08 추가)
알고리즘 문제는 하나의 파일만 사용한다. 문제는 여러가지 알고리즘 문제 풀이 코드를 하나의 폴더에서 관리할때 파일을 실행할때마다 .exe파일이 늘어나게 된다. 이는 폴더를 굉장히 더럽게 만든다. 따라서 어떤 코드를 실행하든 같은 이름의 .exe파일을 만들게 하여 매번 덮어쓰게 해서 단 하나의 .exe파일만 존재하게끔 하려한다.
이를 위해선 tasks.json과 launch.json을 열어 다음과 같이 경로를 변경해주면 된다. (tasks.json은 args의 마지막 줄, launch.json은 program만 보면된다.)
각 줄에 적힌경로를 보면,
이렇게 적혀있는데, 이는 워크스페이스(vscode에서 폴더 열기로 연 폴더) 바로 아래에 temp라는 이름의 실행 파일(.exe)을 뱉어내겠다는 의미이다. 따라서 어떤 코드를 실행하든 exe파일은 temp라는 이름으로 만들어져 워크스페이스 바로 아래에 뱉어지게된다.
Code Runner 사용 시 추가 설정
만약 디버그를 제외한 빌드 및 실행을 아래에서 설명하는 Code Runner를 사용한다면, Code Runner에 설정을 해야한다.
설정 방법은 다음과 같다.
익스텐션 -> code runner -> 관리(톱니바퀴) -> 설정 -> Code-runner:Executor Map을 찾아서 "settings.json에서 편집"을 클릭
settings.json이 열리면 cpp를 찾아서 아래와 같이 바꿔준다.
"cpp": "cd $dir && g++ $fileName -o $workspaceRoot/temp.exe && $workspaceRoot/temp.exe",
별로 안궁금할수도 있겠지만 위 문장의 뜻은 아래 작업을 차례로 실행하는 것이다.
- $workspaceRoot: 현재 작업 중인 워크스페이스 경로
- g++ $fileName -o $workspaceRoot/temp.exe: 실행 파일을 워크스페이스 루트에 temp.exe로 생성
- $workspaceRoot/temp.exe: 생성된 temp.exe를 실행
위 설정까지 끝났다면, Code Runner를 통해 빌드 및 실행을 해도 실행 파일을 temp.exe로 생성하여 다른 파일을 실행할때마다 실행 파일이 생기는 문제를 해결할 수 있다!
Code Runner
정확히 왜쓰는지는 모르겠지만 무엇보다 기존 컴파일러보다 속도가 빠른 느낌이 있고, 무지성으로 코드를 실행하기 편하다. 익스텐션끼리 충돌나서 망가지는 경우를 제외하면 편리하니 설치해두면 좋다. 일단 C/C++을 설치했을 때처럼 익스텐션에서 code runner를 검색해 설치하자.
설치를 했다면 아래 테스트 코드로 한 번 실행해본다.
1000.cpp
#include <iostream>
using namespace std;
int main()
{
int N = 5;
for(int i = 0; i < N; i++){
cout << i << '\n';
}
}
code runner를 사용하여 코드를 실행하면 아래와 같이 출력탭에서 걸린 시간과 함께 결과가 출력된다. (이쁘게 글자에 색도 입혀진다!)
문제는 이렇게 출력탭에서 실행되면 입력을 할 수 없다. 백준 문제는 터미널에 입력을 해야 결과를 출력할 수 있는데 입력이 안되면 참으로 난감하다. 따라서, code runner의 확장 설정을 터미널에서 실행되도록 변경해야한다.
다시 익스텐션으로 돌아와 code runner를 클릭 -> 톱니바퀴 클릭 -> 확장설정 클릭을 한다.
확장 설정 창이 열리고 중간 쯤까지 스크롤을 내리면 Run In terminal이 있는데, 체크가 해제되어 있는걸 체크하면 다시 터미널에서 실행된다.
추가로, clear previous output을 체크하면 이전 실행 내용이 clear되지만... 뭔가 이상하게 clear돼서 잘 사용하지 않는다.(이전에 어떻게 설정했을 때는 됐는데 지금은 왜인지 잘 안된다...)
Competitive Programming Helper (cph)
테스트 케이스를 미리 만들어놓고 실행할 수 있는 익스텐션이다. 매번 반례를 찾아놓고 메모장에다가 붙여놓거나 주석처리해서 사용하면서 테스트했는데 이게 있으면 그럴 필요없다. 실행만 잘되면 아주 유용한 익스텐션이니 하나쯤 장만해두자.
사용법
아주 간단하다. 반례나 테스트 케이스를 입력하고 아래에 파란색 버튼을 클릭하면 된다.(그림에는 없지만 맨 아래 파란색 버튼이 있다.)
bits/stdc++.h
알고리즘 문제를 풀 때 C++에서 가장 짜증나는 점은 내가 분명 vector나 map같은 자료구조를 아는데 이게 어느 헤더에 있는 지 몰라서 한참 헤매는 것이다. C++에서 알고리즘을 풀 때 알아야 하는 헤더가 한 두가지가 아니라 이걸 전부 외워서 문제를 푼다는 것을 여간 피곤한 일이 아니다. 그래서 자주 사용하는 헤더들을 싹다 모아 하나의 헤더 파일을 만든 것이 바로bits/stdc++.h이다.
'왜 하필 이름이bits/stdc++이냐?' 라고 누군가 물어보면, ... 나도 잘 모른다. 하지만 프로그래머스, 백준 등 알고리즘 문제 사이트에서 사용할 수 있는 사회적으로 약속된(?) 폴더 명이다. 어찌됐든 bits/stdc++이 있으면 #include <vector>나 #include <algorithm>같이 해당 기능이 들어있는 헤더 파일을 추가할 필요없다. 많은 헤더파일을 한 번에 가져오는 거기 때문에 성능이 조금 떨어지지만 그거 조금 떨어졌다고 맞을 문제가 시간 초과 뜰 일은 거의 없다.
다음은 stdc++.h 파일이다.(구글링하면 쉽게 구할 수 있다.)
다운받은 stdc++.h를 mingw64에 들어가서 include폴더로 진입 -> bits폴더 생성 -> stdc++.h 추가한다.
이렇게 stdc++.h를 추가하고, 다시 VSCode로 돌아가 아래 코드를 실행했을 때 정상적으로 실행되는 지 확인해본다.
stdcTest.cpp
#include <bits/stdc++.h>
using namespace std;
int main(void){
vector<int> v1;
map<int, int> m1;
v1.push_back(1);
m1[1] = 1;
cout << v1[0] << ", " << m1[1] << '\n';
return 0;
}
#include<vector>와 #include<map>없이도 실행이 아래와 같이 된다면, 성공적으로 bits/stdc++.h를 인식한 것이다. 이로써 C++로 알고리즘 문제를 풀 때 헤더를 외워야하는 고통에서 벗어났다!
결론
이렇게 PS를 위한 C++ VSCode 설정까지 하며 필요한 모든 세팅을 마무리 하였다. 여기까지 설정했다면 추가적으로 prettier나 doxygen documentation generator같은 익스텐션을 설치해 코드 가독성을 높이는 익스텐션을 사용해 보길 바란다. 다음 글은 번외로 VSCode를 완전히 지우는 법에 대해 다뤄보겠다.
다음 글 링크
https://pledge24.tistory.com/243
VSCode를 완전히 삭제해보자 (Window) - Code, .vscode 폴더 삭제
개요 VSCode는 삭제해도 지금까지 사용한 익스텐션이나 세팅값이 삭제되지 않는다. 그렇기 때문에 익스텐션 간 충돌이 발생하거나 업데이트로 인한 VSCode 망가짐 현상으로 정상적인 작동이 되지
pledge24.tistory.com
'환경설정 및 세팅 > IDE 및 OS 설정' 카테고리의 다른 글
[VSCode] 기본 터미널을 변경해보자. (0) | 2024.06.26 |
---|---|
[VSCode][Tips] 유용한 단축키를 알아보자 (1) (1) | 2024.06.16 |
VSCode를 완전히 삭제해보자 (Window) - Code, .vscode 폴더 삭제 (1) | 2024.06.10 |
VSCode에서 C++을 사용해보자(Window) 2 - VSCode 익스텐션 세팅 (0) | 2024.06.09 |
VSCode에서 C++를 사용해보자(Window) 1 - mingw64 설치 (1) | 2024.06.09 |