CLion 2020.1: IDE 전반의 다양한 개선 사항 및 CUDA와 임베디드 프로젝트 사용 혜택

게시일: 작성자: jessie.cho@jetbrains.com

우선 모두 안전하게 지내시길 바란다는 인사를 전합니다! 사실 요즘처럼 중요한 소식이 많은 시기에 업무에 집중하기 쉽지 않습니다. 그럼에도 저희 팀은 최선을 다해 가장 자신 있는 일을 해 왔습니다. 바로 개발자의 생산성을 높이는 훌륭한 도구를 제작하는 일이죠. 그리하여 새로운 CLion 2020.1 릴리스를 소개합니다!

CLion 2020.1 릴리스

새 버전으로 업데이트를 하려면 Toolbox App, Ubuntu의 스냅 패키지, 웹사이트 또는 2019.3(2019.3.5) 최신 빌드의 패치 업데이트를 사용하면 됩니다.

CLion 2020.1 다운로드

아래 내용에서 주요 개선 사항을 간략히 살펴보실 수 있습니다. 특정 세부 정보에 관심이 있으시면 다음을 읽어주세요.

CUDA 프로젝트

본질적으로 CUDA C 및 C++는 몇 가지 확장프로그램을 더한 C/C++입니다. 이제 CLion 2020.1 버전에서 CUDA 코드를 적절히 처리할 수 있습니다. 저희 팀은 CLion 언어 엔진에서 CUDA 코드를 올바르게 분석하도록 학습시키는 데 많은 노력을 투입하여 코드 분석 시 적색 코드와 긍정오류(오탐)를 제거하였습니다. 또한 이번 개선에는 CUDA 코드에서도 작동하는 코드 탐색, 코드 문서 및 기타 코딩 지원이 포함됩니다. 마지막으로 코드 완성 기능에 커널 호출의 대괄호 완성 기능도 추가되었습니다.
CUDA 코드 완성

(테스트에서는 GitHub의 ClaraGenomicsAnalysis 프로젝트를 사용했습니다.)

그뿐 아니라 CLion은 CUDA 파일 확장자인 .cu/.cuh도 지원합니다. 이제 신규 C/C++ 파일 생성 시 해당 확장자를 선택할 수 있습니다. 또한 CLion은 새롭게 생성된 파일에 CMake 대상을 추가하도록 제안합니다. 이제 다음의 선택 가능한 옵션 목록에 CUDA 대상(0>cuda_add_executable / cuda_add_library으로 생성된 대상) 이 추가됩니다.
CUDA 새 파일

마지막으로, CLion에서 신규 CUDA 프로젝트를 시작하는 기능이 추가되어, 새 프로젝트 마법사를 통해 CMake 및 main.cu 샘플 파일을 생성할 수 있습니다. CLion에서 CUDA 프로젝트로 작업하는 방법은 온라인 도움말을 참조하세요.

임베디드 개발

CLion 임베디드 개발을 지속적으로 개선해 왔으며 이번 릴리스에서도 두 가지 중요 개선 사항을 추가했습니다. 첫 번째는 IAR 컴파일러 지원입니다. 이제 CLion에서 컴파일러 정보를 적절히 수집하므로 임베디드 프로젝트에서 컴파일러를 성공적으로 사용할 수 있습니다. IAR 컴파일러 사용에 도움이 될 몇 가지 팁을 소개합니다.

  • MinGW 필요 CLion의 IAR 툴체인 설정에서 MinGW 환경을 사용하고 해당 필드의 IAR 컴파일러로 경로를 제공합니다.
  • IAR 임베디드 작업 환경에서 CMake를 활용하는 방법을 다음 노트에서 확인해 보세요.

IAR 컴파일러
이 자리를 빌어 IAR Systems AB의 지원 및 파트너 라이선스에 다시 한번 감사를 표합니다. 앞으로도 지속적인 협업을 기대해주세요. 다음 목표는 이 툴체인과 통합을 추가로 살펴보는 것입니다.

두 번째 개선 사항은 CLion 플러그인 PlatformIO입니다. PlatformIO는 차세대 에코시스템으로 Arduino와 같은 임베디드 개발 프로젝트를 빠르게 시작하는 데 매우 유용합니다. 새 프로젝트 마법사로 해당 프로젝트 유형을 선택하면 이 플러그인이 PlatformIO CMake 기반의 프로젝트를 생성하여 배경에서 적절한 PlatformIO 명령어를 호출합니다.
PlatformIO plugin
CLion은 이와 같은 프로젝트 작업 시 자동으로 디버그 및 업로드용 구성을 생성합니다. 또한 PIO 통합 디버거 사용을 위해 PlatformIO 디버그 구성을 생성할 수도 있습니다. 자세한 내용은 공식 문서를 참조하세요.

Windows 프로젝트

Windows에서 CLion을 사용하는 개발자가 점점 늘어나는 추세입니다. 사실 통계를 살펴보면 Windows는 JetBrains 사용자가 주로 사용하는 플랫폼입니다. 그렇기에 Windows 커뮤니티에서 가장 많은 요청이 있는 기능에 집중하고 있습니다.

Clang은 GCC 다음으로 인기 있는 컴파일러입니다(출처: 2019년도 개발자 에코시스템 현황 연구) 물론 Windows의 선두 주자는 Microsoft Visual Studio 컴파일러지만 Clang-cl 역시 폭넓게 사용되고 있습니다. LLVM 웹사이트에서 설치하거나 Visual Studio 도구와 함께 설치 가능합니다. 이제 CLion에서도 사용해 보세요!
Clang-cl 지원

Windows 개발자를 위한 다른 희소식은 바로 Visual Studio C++ 툴체인으로 JetBrains에서 개발한 LLDB 기반 디버거가 이제 해당 툴체인의 기본 디버거로 지원된다는 점입니다. 별도 설정 없이 바로 사용하실 수 있습니다! 상단 스크린샷에서 Visual Studio 툴체인으로 미리 선택된 옵션을 확인하세요. 단, 해당 디버거는 일반 LLDB 빌드가 아니며, JetBrains 팀에서 개발하여 Native Visualizer를 처리할 수 있는 디버거입니다(Native Visualizer 지원을 활성화하려면 Settings(설정) | Build, Execution, Deployment(빌드, 실행 배포) | Debugger Data Views(디버거 데이터 뷰) | Enable NatVis renderers for LLDB(LLDB용 NatVis 렌더러 활성화)로 이동하세요.

다음의 짤막한 데모도 확인해 보세요.

Clang 기반 도구 업데이트

또 다른 중요 개선 사항은 저희 팀이 가능한 범위 내에서 Clangd 기반 언어 엔진으로 이전하는 것입니다. 그 이유는 두 가지인데요, 첫 번째 이유는 보다 정확한 언어 기능을 개발하여 언어 표준의 최근 업데이트를 빠르게 따라잡기 위함입니다. 두 번째로, 언어 제약이 없는 액션의 기능을 향상하고자 합니다(Clang에서 항상 가능한 것은 아니지만 더욱 다양한 기능을 지속적으로 시험할 예정입니다).

CLion 2020.1 버전에서는 데이터 흐름 분석(DFA) 기능이 Clangd로 완전히 이전되었습니다. DFA는 무엇이며 왜 유용할까요? DFA 검사는 코드 내 데이터 흐름을 분서한 후 분석 결과를 기반으로 잠재적 문제를 탐지합니다. 예를 들어 DFA는 항상 false/true인 조건문, 무한 루프, 누락된 반환문, 무한 재귀 등을 파악할 수 있습니다.
DFA
이러한 기능은 대다수의 컴파일러에서 지원되지 않는 기능입니다. 물론 DFA 작업은 매우 정확한 코드 구문 분석 및 문제 해결이 요구되며 이는 상당한 시간이 소요되는 작업입니다. 특히 기본 문제 해결 작업의 속도가 느릴 때 더 많은 시간이 소요될 테고요. 그렇기에 Clangd으로의 이전은 분석 검사 기능을 개선하는 과정이라 볼 수 있습니다.

이전 CLion 버전에서 Clangd 기반 코드 완성 제공자가 도입되었지만 당시에는 CLion 자체 제공자와 결합을 통해서만 작동하였습니다. 2020.1 버전을 개발하는 동안 수십개의 관련 문제를 수정하고 누락된 코드 완성 기능을 추가하여 Clang에 의해 제공되는 코드 완성을 개선했습니다. 그 결과, 기본적으로 CLion 코드 완성 기능의 단독 공급자로 Clang을 사용하는 모드를 사용할 수 있게 되었습니다. 이로 인해 우선 순위 지정 및 정렬과 관련된 일부 문제가 해결되었습니다.

여러 C++ 프로젝트에서 ClangFormat 및 Clang-Tidy는 표준 도구로 사용되며 그 구성 파일은 프로젝트 저장소에 커밋되는 경우가 많습니다. 하지만 CLion에서 이러한 도구들의 통합이 도구 자동 전환을 지원하지는 않았습니다. 불편 사항을 지적해주신 사용자 여러분께 진심으로 감사의 말씀을 전합니다! 이제 CLion에서는 다음 기능이 지원됩니다.

  1. 프로젝트 루트에서 .clang-format 구성 파일을 탐지하고 ClangFormat으로 자동 전환(현재로서는 프로젝트 설정별 IDE 전환만이 지원됩니다).
  2. .clang-tidy 구성 파일을 탐지하고 이 구성파일을 위해 IDE 설정의 Clang-Tidy 사용을 자동으로 해제

이 기능의 도입으로 두 가지 Clang 도구를 훨씬 편리하게 사용하실 수 있길 바랍니다!

다음의 짤막한 데모도 확인해 보세요.

리팩토링, 서식 지정 도구, 문서 및 에디터 개선 사항

CLion은 유용한 리팩토링을 다양하게 제공합니다. 그중 Change Signature(시그니처 변경)(Windows 및 Linux: Ctrl+F6, macOS: ⌘F6)는 가장 인기 있는 리팩토링 중 하나입니다. 이 리팩토링은 함수 이름 및 반환 유형 변경과 매개변수 추가, 제거 및 재배열 기능을 지원합니다. 함수 수동 업데이트에 비해 이 리팩토링은 함수 시그니처 변경 시 진가를 발휘합니다. CLion에서 해당 함수의 사용 위치를 모두 검색하고 모든 호출, 구현, 재정의 기록을 업데이트하여 변경 사항이 반영되도록 안전하게 시그니처를 변경합니다.

새 매개변수가 추가될 때 함수 사용 위치는 어떻게 처리되는지 궁금하실 수도 있습니다. 기존 CLion 버전에서는 코드를 컴파일 가능한 상태로 유지하기 위해 기본 유형 값을 해당 사용 위치에 인수(숫자에는 0, 포인터에는 nullptr)로 추가했습니다. 한편 CLion 2020.1 버전의 경우 리팩토링 대화상자에서 업데이트된 모든 함수 사용 위치의 값 중 대체할 값을 직접 지정할 수 있습니다.
시그너처 변경

또한, 대화상자의 새로운 기본 값 필드에서 코드 완성 기능도 지원됩니다! 해당 필드를 공백으로 두면 기존 동작이 적용되며 해당 유형의 기본 값이 사용됩니다.

이번 릴리스는 업데이트된 서식 지정 도구를 선보입니다. 이제 구조체 멤버 필드 및 클래스 멤버 필드의 이름 지정을 별도로 설정할 수 있습니다. 그뿐 아니라 코드 접기가 #pragma region#pragma endregion에서 지원됩니다.

에디터 업데이트 사항은 다음과 같습니다.

  • 문서 미리보기 및 함수 시그니처, 추론 유형, 매크로 치환 관련 정보가 표시되는 포괄적 문서 미리보기 도구인 빠른 문서 보기 기능이 이제 마우스로 가리키는 것만으로 지원됩니다.
  • 에디터 기본 글꼴로 JetBrains에서 개발한 새로운 오픈 소스 글꼴인 JetBrains Mono가 제공됩니다.
  • 새로운 기본 light 테마인 IntelliJ Light를 살펴보세요. 이제 모든 운영 체제에서 표준 테마로 지원됩니다.
  • 한 번에 여러 개의 터미널 세션을 사용해야 할 경우 터미널을 수직 혹은 수평으로 분할하여 다수의 세션을 나란히 실행할 수 있습니다.
    터미널 분할

다음의 짤막한 데모도 확인해 보세요.

실행/디버그 구성

실행/디버그 구성은 CLion에서 애플리케이션 실행 및 디버그를 통해 애플리케이션 시작을 지원합니다. 이번 릴리스에 몇 가지 주요 업데이트가 추가되었습니다.

  • 원격 GDB 서버임베디드 GDB 서버 구성이 사용자 지정 대상에서도 작동합니다. 따라서 로컬 시스템에서 실행 중인 CLion 인스턴스의 원격 호스트 또는 마이크로 컨트롤러에서 애플리케이션을 디버그할 수 있으며, 이는 CMake 기반 프로젝트뿐 아니라 모든 사용자 지정 애플리케이션(컴파일 데이터베이스 포함)에서도 지원됩니다.
  • 이제 CLion에서 Google Test 대상 1.8.1 버전 및 상위 버전을 적절히 인식하며 자동으로 실행/디버그 구성을 생성합니다(즉, CLion에 내장된 테스트 러너에서 테스트를 실행할 수 있습니다).

CLion 2020.1 버전의 경우 실행/디버그 구성에 매크로 및 경로 변수가 추가되었습니다.

  • 매크로는 사전 정의되었으며, 실행/디버그 구성 대화상자의 + 기호를 클릭하면 열리는 대화상자에서 사용 가능한 매크로 목록을 확인할 수 있습니다. 단, 매크로는 현재 CMake, 사용자 지정 빌드 및 Gradle Native 애플리케이션에서만 지원됩니다.
  • 경로 변수는 Settings/Preferences(설정/환경 설정) | Appearance & Behavior(모양 및 동작) | Path Variables(경로 변수)에서 구성할 수 있습니다. 일반적인 사용 사례는 프로젝트에서 광범위하게 사용되지만 프로젝트 디렉토리 외부에 위치한 라이브러리 경로 변수를 생성하는 것입니다.

Prompt/FilePrompt 매크로는 구성에 새롭게 추가된 Redirect input from(다음에서 입력 리디렉션) 필드와 결합하여 사용하면 더욱 유용합니다. 해당 필드를 통해 입력 항목을 파일에서 애플리케이션 stdin으로 리디렉션할 수 있으며 애플리케이션을 시작할 때마다 FilePrompt 매크로가 파일 선택 대화상자를 호출합니다.
입력 리디렉션

다음의 짤막한 데모도 확인해 보세요.

IntelliJ 플랫폼 업데이트

언제나처럼 VCS 및 기타 IntelliJ 플랫폼 개선 사항IntelliJ Rust 플러그인 업데이트도 CLion의 이번 릴리스에 포함되어있습니다. IntelliJ Rust 플러그인에 대한 블로그 포스트도 게시될 예정이니 새로운 소식을 기다려 주세요!

Makefile 지원 진행 상황?

우와! 혹시 CLion에서 Makefile 지원이 추가될 예정이라는 루머를 들으셨나요?! 루머의 출처가 어디든 그 내용은 사실입니다. 현재 저희 팀은 CLion에 추가할 Makefile 프로젝트 분석기 프로토타입 개발을 마쳤으며 개발 접근법 및 현재 진행 상황에 대한 블로그 게시물도 게시했습니다. 또한 사용자 여러분의 지지를 바탕으로 프로토타입 테스트를 위한 프로젝트 목록도 구성했습니다.

현재 해당 목록에는 약 40여 개의 프로젝트가 포함되어 있으며 그중 절반 이상에 대한 검사가 완료되었습니다(CPython, 일부 임베디드 프로젝트, Nano, Nodejs, PostgreSQL). 대부분 프로젝트는 원활히 작동했지만 프로토타입이 검사에 실패한 프로젝트도 여전히 남아 있습니다(실패 원인에는 libtool과 같은 래퍼가 포함됩니다). GCC, FreeBSD, Wine 및 Perl 등이 실패한 프로젝트에 해당합니다. 한편, 도전적인 몇몇 사용자는 개인 프로젝트에서 프로토타입을 직접 테스트하고 귀중한 피드백을 남겨주셨습니다! 모든 피드백에 감사드립니다.

이 작업은 계속 진행되며, 프토토타입은 2020.2 EAP에서 공개될 예정입니다. 그동안 이 프로젝트를 지원하고 싶다면 이 게시물을 확인해 주세요.

이상입니다! CLion 2020.1 버전을 사용해 보세요. 현재 구독 중이라면 오늘 업데이트하세요. 또는 30일 무료 평가판을 통해 새 기능을 살펴보실 수도 있습니다!

CLion 2020.1 다운로드

CLion 팀
JetBrains
The Drive to Develop

이 게시물은 Anastasia Kazakova가 작성한 CLion 2020.1: Dozens of Improvements Across the IDE, and Benefits for CUDA and Embedded Projects를 번역한 글입니다