2020. 12. 12. 12:20ㆍ개발
CLion에는 컴파일러가 내장되어 있지 않으므로, Visual Studio의 MSVC, MinGW에서 gcc(g++)을 잡아 사용합니다.
하지만 MSVC의 경우 한글 폴더가 있으면 깨질뿐더러 온라인 저지 사이트에서는 대부분 gcc를 사용하니 동일한 답을 보장하지 않는 경우도 생깁니다.
일부 분들은 MinGW에서 C++17, 20에서 일부 비표준 헤더(bits/stdc++.h)들을 불러오지 못하는 오류를 겪는 것을 보았습니다.
그래서 오늘은 윈도우에서 제공하는 WSL(Windows Subsystems for Linux)로 Linux 환경의 gcc를 사용해 C(C++)를 컴파일하는 방법에 대해 다뤄보겠습니다.
우선 CLion은 JetBrains에서 제공하는 IDE입니다. 유료이기 때문에 30일 체험판을 받아 사용할 수 있으며, 학생 인증(Github 계정으로 인증 가능)을 하면 재학 기간 중 무료로 사용할 수 있습니다.
CLion 단일 설치 파일을 받는 방법도 있지만, 이후 자동 업데이트 등을 위해서 툴박스(JetBrains Toolbox)로 설치해보겠습니다.
www.jetbrains.com/toolbox-app/
JetBrains Toolbox App: Manage Your Tools with Ease
Open any of your projects in any of the IDEs with one click.
www.jetbrains.com
여기서 다운로드 파일을 받아 설치합니다.
설치하면 우측 하단에 JetBrains 로고를 볼 수 있습니다.
약관을 동의하면, 설치 가능한 IDE 목록이 나옵니다.
CLion을 설치해줍니다.
다음은 WSL을 설정할 차례입니다.
우선 AMD를 사용하는 경우 별도로 활성화하지 않았다면 CPU 가상화가 꺼져있습니다.
BIOS에서 CPU 가상화를 켜야 WSL을 사용할 수 있습니다.
에서 WSL을 활성화해줍니다. (+설정 변경 후 재부팅해야 합니다)
다음은 Microsoft Store에 들어가서 Ubuntu를 검색하고 설치해줍니다. (www.microsoft.com/store/productId/9NBLGGH4MSV6)
이제 Ubuntu를 실행해줍니다.
초기 설정으로 유저명, 비밀번호를 치는 화면이 나옵니다.
다음은 WSL에 빌드에 필요한 패키지와 SSH 설정을 위한 아래 명령어를 쳐줍니다.
sudo apt-get update
sudo apt-get install cmake gcc clang gdb build-essential
wget https://raw.githubusercontent.com/JetBrains/clion-wsl/master/ubuntu_setup_env.sh && bash ubuntu_setup_env.sh
이제 돌아와서 WSL을 켜줍니다.
계정이 있다면, 등록하고 없다면 Evaulate for free를 눌러 진행합니다.
new project를 누르고 아무거나 만들어줍니다.
File -> Settings -> Build, Execution, Deployment -> Toolchains
기본적으로 외부 컴파일러를 잡은 것을 볼 수 있습니다. WSL을 추가하려면 +버튼을 눌러서 WSL을 선택합니다.
WSL 선택하고 up을 눌러서 타컴파일러보다 위쪽에 배치해주세요.
이제 WSL에 접속하기 위해 username, password만 입력해주면 됩니다.
그런후, +를 누르고 Host(127.0.0.1), Port(2222), username, password를 차례로 입력한 뒤, Test Connection을 눌러주세요.
fingerprint 확인 후 아래와 같은 화면이 뜨면 성공한겁니다.
이제 WSL에서 컴파일러를 잡는 것을 볼 수 있습니다.
그런데 위와 같은 오류가 나는 분들이 계실겁니다.
WSL의 CMake 버전과 CMakeLists.txt의 버전이 일치하지 않아 생기는 오류입니다.
파일을 열어 1번째 줄의 VERSION 3.17을 3.16으로 바꿔줍니다.
그런후, CMake에서 refresh 버튼을 눌러주면,
성공한 것을 볼 수 있습니다.
빌드 후 실행하는 방법은
상단 우측의 > 버튼을 눌러주면 됩니다.
종종 WSL을 사용할 때 자동 완성이 안되는 경우가 있습니다.
1) Ubuntu 실행
2) File -> Invalidate and Restart
를 하면 대개 해결됩니다.
잘되는 것을 볼 수 있습니다.
질문이나 오류가 있으면 댓글 달아주세요~!