[VS Code] Mac Clang C++17 컴파일러 환경 설정

Updated:

mac의 경우 clang 컴파일러를 사용하여 cpp파일을 컴파일 한다.

이때 clang의 default 컴파일 버전은 C++98이고 보통의 VS Code의 경우 C++11로 설정되어있을 것이다.


오랜만에 C++로 알고리즘 문제를 풀던 도중 다음과 같은 컴파일 에러를 마주하게 되었다.

Lambda-Expression

C++11 컴파일러 세팅에서는 auto 키워드의 사용에 경고가 발생하고 pair 데이터를 괄호 {}로 묶어서 저장하는것이 아직 업데이트 되지 않아서 에러가 발생하는 문제가 발생했다.

컴파일러를 C++17로 세팅하기 위해 참고했던 자료들을 바탕으로 정리를 해보고자 한다.

목차

  • Extension 설치
  • tasks.json 설정
  • c_cpp_properties.json 설정
  • launch.json 설정
  • 실행 및 디버그

Extension 설치

맥에서는 기본적으로 clang이 설치되어 있지만 clang --version 명령어를 통해 확인을 하고 진행하는 것을 권장한다.

먼저 C/C++ 확장 프로그램을 VS Code Extension을 통해 설치한다.

Lambda-Expression

+ 추가로 C/C++ Extension Pack도 설치하는것을 권장한다.

그다음 Code Runner 확장 프로그램도 설치한다.

Lambda-Expression

톱니바퀴 모양을 클릭한 후 확장 설정을 누르면 설정창으로 이동할 수 있다.

Lambda-Expression

다음과 같이 Code-runner: Run In Terminal에 체크를 해준다.

Lambda-Expression

옵션

해당 옵션 파트는 적용하지 않아도 C++17세팅에 영향을 미치지는 않지만 컴파일 시에 매번 나타나는 매세지 창이기 때문에 수정해 주는것이 좋다.

settings.json파일을 열어서 code-runner.executorMap을 아래와 같이 설정해 준다.

만약 code-runner.executorMap이 파일에 존재하지 않는다면 입력해준다.

Lambda-Expression


tasks.json 설정

임의의 cpp파일을 생성한뒤 $($만들어져 있다면 생성할 필요 없음.) Terminal - Configure Defulat Build Task로 이동한다.

Lambda-Expression

compiler: /usr/bin/clang++ 경로를 선택하여 tasks.json 파일을 생성한다.

Lambda-Expression

위와 같이 "args" 부분에 “-std=c++17” , “-stdlib=libc++” 를 추가하여 준다.

C++ 버전 입력을 통해 해당 버전의 문법을 사용할 수 있다.

c_cpp_properties.json 설정

command + shift + p 를 동시 입력하여 command palette를 연다.

Lambda-Expression

C/C++를 입력하고 구성 편집(JSON)을 클릭하여 c_cpp_properties.json 파일을 연다.

Lambda-Expression

다음과 같이 c_cpp_properties.json를 수정한다.

launch.json 설정

실행 -> 구성추가 -> 환경 선택(Select Environment) -> C++(GDB/LLDB)

Lambda-Expression

clang++ /usr/bin/clang++를 선택한다.

Lambda-Expression

다음과 같이 launch.json 파일이 생성됐다.

launch.json파일의 preLaunchTask 값과 tasks.json에서 label값이 일치해야 한다.


Cmd + Shift + P -> Run By Language - cpp을 선택한 다음, Option + Control + n (>Run Code)로 프로그램을 빌드하고 실행한다.

Lambda-Expression

다음과 같이 C++17로 성공적으로 컴파일 한것을 확인할 수 있다.


참조

Categories:

Updated:

Leave a comment