기타 개발

C++ 개발 환경 세팅

Junheehee 2022. 8. 7. 01:45

재미없는 개발 환경 세팅을 해보자.

내 컴퓨터는 M1 맥북이고 에디터는 vscode를 사용할 것이다.

 

 

g++

 

일본어를 할줄 몰라서 일본 여행을 갔을 때 답답했던 경험이 있다.

하지만 재밌게 여행할 수 있었는데, 말을 직접 하지는 못해도 파파고로 번역하면 의사소통이 가능했기 때문이다.

프로그래밍도 마찬가지다.

컴퓨터는 우리가 c++로 작성한 코드를 이해하지 못한다.

따라서 우리가 이해하는 프로그래밍 언어를 컴퓨터가 이해하는 기계어로 번역해주는 작업이 필요하다.

이 작업을 컴파일(compile)이라고 하고, 컴파일을 수행하는 소프트웨어를 컴파일러(compiler)라고 한다.

즉 파파고로 한국어를 일본어로 번역했다면, 컴파일러로 프로그래밍 언어를 기계어로 컴파일하는 것이다.

 

 

여러 c++ 컴파일러 중에 g++을 사용할 것이다.

그런데 왠 떡인지 이미 g++이 설치돼있었다!!!!!

 

brew 설치할 때, g++이 포함되어 있는 xcode command line tools도 설치해서 그런 것 같다.

 

 

아무튼 g++이 잘 작동하나 확인해보자.

테스트용 간단한 c++ 파일을 만들었다.

 

// test.cpp

#include <iostream>
using namespace std;

int main(void)
{
    cout << "Hello, world!";
    return 0;
}

 

만든 c++ 파일을 g++로 컴파일하자.

 

$ g++ test.cpp

 

컴파일하니 실행 파일 a.out이 생성되었다.

 

g++ 컴파일

 

./파일이름 명령어로 파일을 실행시키자.

 

$ ./a.out

 

Hello, world!가 잘 출력되었다!!!

 

a.out 실행

 

 

a.out 말고 다른 이름의 실행 파일을 만들고 싶다면 -o 옵션을 추가하면 된다.

 

$ g++ test.cpp -o test

 

test 파일이 잘 생성되었고, 이것도 잘 작동한다.

 

test 파일 생성

 

 

 

 

.zshrc command 설정

 

컴파일 할 때마다 매번 -o를 붙이는 건 귀찮은 작업이다.

그래서 .zshrc 파일에 명령어를 추가해주자.

 

.zshrc는 vim 명령어로 편집할 수 있다.

 

$ vim ~/.zshrc

 

키보드 i를 눌러 insert 모드로 전환한 다음,

.zshrc파일에 아래의 코드를 추가해주자.

수정사항을 저장하고 싶다면 키보드 esc를 누른 뒤, :wq를 입력하면 저장된다.

저장하고 싶지 않다면 :q!를 입력하자.

 

function gpp() {
        g++ $1'.cpp' -o $1'.exe'
}

 

명령어를 함수로 정의한 이유는 컴파일할 c++ 파일명을 파라미터로 쓰기 위해서다.

$1는 첫번재 파라미터를 의미한다. 당연히 두번째 파라미터는 $2이다.

명령어는 아무거나 사용해도 되지만 g++을 시용해서는 안된다!!
함수 안에 g++ 을 호출하고 있기 때문에 명령어를 g++로 해버린다면, 무한루프에 빠진다.

그래서 gpp로 정했다.

 

 

source 명령어로 수정사항을 적용하고 확인해보자.

 

$ source ~/.zshrc
$ which gpp

 

zshrc 설정 완료

 

잘 적용되었다.

이제 'g++ 파일명.cpp -o 실행파일명.exe' 가 아닌 'gpp 파일명'으로 간편하게 컴파일 할 수 있다.

 

 

명령어를 만든 김에 몇가지를 더 추가하자.

우선 컴파일 할 때 c++ 17 버전으로 컴파일하게 해주는 옵션 '-std=c++17'을 추가해줬고,
컴파일하고 자동으로 실행파일을 실행시키도록 만들었다.

 

function gpp() {
  g++ -std=c++17 $1'.cpp' -o $1'.exe'
  ./$1'.exe'
}

 

짠!! 컴파일 후, 자동으로 실행이 잘 되었다.

 

실행파일 바로 실행

 

 

 

 

c/c++ extension pack

 

vscode에는 개발을 도와주는 훌륭한 익스텐션들이 많다.

물론 c++ 관련 익스텐션도 있다.

 

Microsoft에서 만든 c++ 익스텐션인 c/c++ extension pack을 설치하자.

 

 

C/C++ Extension Pack - Visual Studio Marketplace

Extension for Visual Studio Code - Popular extensions for C++ development in Visual Studio Code.

marketplace.visualstudio.com

 

 

 

 

포맷 설정

 

난 vscode의 default formatter로 prettier extension을 사용하고 있다.

하지만 prettier는 c++에 해당하는 포맷을 제공하고 있지 않으므로, 따로 설정해야 한다.

 

vscode에 팔레트를 열어(단축키 cmd + p)
>Preferences: Open User Settings (Json) 를 입력해 setting.json을 열자.

 

setting.json에 아래의 코드를 추가하자.

들여쓰기 간격과, 한줄 최대 글자 수를 설정하고,

코드 스타일은 google 스타일을 따르도록 하자.

 

  "C_Cpp.clang_format_style": "{ IndentWidth: 2, ColumnLimit: 80 }",
  "C_Cpp.clang_format_fallbackStyle": "Google",

 

 

해당 페이지엔 clang_format의 자세한 설명과 google 스타일 외 여러 스타일의 소개과 나와 있다.

 

 

Clang-Format Style Options — Clang 16.0.0git documentation

Clang-Format Style Options Clang-Format Style Options describes configurable formatting style options supported by LibFormat and ClangFormat. When using clang-format command line utility or clang::format::reformat(...) functions from code, one can either u

clang.llvm.org

 

 

이렇게 설정하고 코드를 저장하면..... 코드가 정렬되지 않는다.

왜냐하면 앞서 말한대로 아직 default formatter가 prettier이기 때문이다.

 

따라서 c++의 default formatter을 따로 설정해줘야 한다.

아까 수정한 setting.json 파일에 밑에 코드를 추가해주면 끝이다.

 

  "[cpp]": {
    "editor.defaultFormatter": "ms-vscode.cpptools"
  }

 

이제 저장을 하면,

코드가 아래처럼 자동 정렬되었다.

 

format 설정

 

 

간단하게 c++ 개발 환경 세팅을 완료했다!!

윈도우 노트북에서 처음 세팅할 떄는 이것저것 설치하고 많이 애먹었던 기억이 있는데, 맥북은 엄청 간단했다.

'기타 개발' 카테고리의 다른 글

Sync vs Async / Blocking vs Non-blocking  (0) 2022.06.15
REST API  (2) 2022.05.25
웹소켓(Web Socket)  (4) 2022.05.18
쿠키, 세션과 JWT  (0) 2022.05.07
1. 인터넷은 무엇일까  (1) 2021.11.10