CMake 지원

CMake는 CLion에서 여전히 가장 긴밀하게 통합되어 있는 프로젝트 모델입니다.

CMake 프로젝트

CMake 프로젝트 열기

모든 CMake 기반 프로젝트를 별도 설정 없이 CLion에서 쉽게 열 수 있습니다.

  • 프로젝트에서 프로젝트 소스의 루트 CMakeLists.txt 파일을 참조하도록 지정합니다.
  • 또는 기존 생성 폴더 또는 CMakeCache.txt 파일을 참조하도록 지정합니다(단, 이 방법은 Makefiles 생성기에서만 사용).

Mark directory as

디렉터리를 라이브러리나 프로젝트 소스/헤더로 직접 표시하거나 일부 디렉터리를 제외하려는 경우(즉, CMake 프로젝트 구조에서 분리하려는 경우), Mark directory as(디렉터리를 다음으로 표시) 기능을 이용하면 됩니다. 이 액션은 코드 생성, 리팩터링, 탐색을 비롯해 색인 생성에 영향을 미칩니다(예: 색인 생성에서 빌드 디렉터리, 바이너리, 로그 및 생성된 데이터를 제외할 수 있음). 자세히 알아보기

CMake 환경 변수 완성 기능

CLion 탐지

프로젝트의 CMake 명령어가 CLion에서 실행되고 있는지 탐지해야 하는 경우, 그리고 해당 명령어가 실행되고 있을 때 특정 변수/경로를 설정하거나 일부 추가 스크립트를 선택하여 실행해야 하는 경우, CLION_IDE 환경 변수를 사용해 보세요. CLion은 더 간편한 탐지를 위해 다음과 같은 환경 변수 완성 기능을 제공합니다.

파일 추가/삭제

새 파일을 추가하면 CLion에서 해당 파일을 CMake 대상에 추가하도록 제안합니다.

프로젝트에서 파일을 삭제하면 CLion에서 명령어 인수에 있는 해당 파일 참조를 삭제하거나 삭제 후 명령어에 오류가 발생할 수 있음을 경고합니다.

CMake 프로젝트

프로젝트 가져오기

비 CMake 프로젝트를 가져올 수 있으며(File(파일) | Import Project...(프로젝트 가져오기)), 이 경우 CLion에서 해당 프로젝트의 CMakeLists.txt 파일을 자동으로 생성합니다.

CMake 생성기

CMake File API가 지원되어 CLion에서 다양한 CMake 생성기를 사용할 수 있게 되었습니다. Ninja, Xcode, Visual Studio 등을 선택할 수 있으며 이는 모든 플랫폼, 원격 모드, WSL에서 작동합니다.

자세히 알아보기

CMake Configuration

CMake 프로파일

CMake 프로파일(Build(빌드), Execution(실행), Deployment(배포) | CMake)을 사용하면 CMake 생성 디렉터리와 CMake 구성 유형, CMake 옵션 및 환경 변수 등을 관리할 수 있습니다.

CMake 프로파일을 새로 원하는 만큼 생성하거나 모든 설정이 사전 입력된 기존 프로파일을 복사해 보세요. 프로젝트 빌드 구성을 새로운 범용 CMake 사전 설정에 저장하면 CLion이 필요한 CMake 빌드 사전 설정을 자동으로 탐지하고 CMake 프로파일로 가져옵니다.

도구 모음에 있는 실행 구성 전환기나 Run(실행, Shift+Alt+F10)/Debug(디버그, Shift+Alt+F9) 구성 전환기 팝업에서 CMake 프로파일 사이를 전환할 수도 있습니다.

CMake 도구 창 및 CMake 캐시

CMake 도구 창에는 진행 과정을 추적하고 CMake 스크립트를 디버그하는 데 사용되는 CMake 출력 로그가 다음과 같이 표시됩니다.

Settings(설정) | Build, Execution, Deployment(빌드, 실행, 배포) | CMake 메뉴에서 CMake 캐시 변수를 검토하고 단일 테이블 기반 UI의 CMake 명령어에 전달되는 CMake 옵션을 업데이트할 수 있습니다.

테이블에서 작업 중이라면 입력을 시작하여 변수 또는 해당 값을 검색해 보세요. 또한 CLion은 CMake 캐시 변수 툴팁에서 간략한 설명을 표시합니다.

CMake 메뉴

Tools(도구) | CMake로 이동하면 다음과 같은 유용한 CMake 관련 액션을 이용할 수 있습니다.

  • Reload CMake Project(CMake 프로젝트 다시 로드): 최근 CMake 변경 내용을 적용하고 CLion이 프로젝트를 다시 로드하여 에디터에 변경 내용을 반영하도록 강제하려는 경우 사용합니다. 자동으로 다시 로드하려면 Build, Execution, Deployment | CMake(빌드, 실행, 배포 | CMake) 설정을 이용하세요.
  • Change Project Root(프로젝트 루트 변경): 프로젝트 루트 디렉터리가 최상위 CMakeLists.txt 파일이 있는 디렉터리와 다를 때 사용합니다.
  • Reset Cache and Reload Project(캐시 재설정 및 프로젝트 다시 로드): 모든 IDE 색인 및 캐시를 삭제하지 않고 CMake 캐시를 비울 수 있습니다.

스마트한 CMake 지원

CMake 주석

CMake에서 이름 변경

CMake에서 Rename(이름 변경) 리팩터링(Shift+F6)을 사용하여 사용자 심볼의 이름을 변경하는 경우 해당 심볼이 사용된 모든 위치가 자동으로 업데이트됩니다.

CMake 설치

프로젝트에 CMake 설치 대상이 있을 경우 이제 CLion의 Run(실행) 메뉴에서 Install(설치)을 호출할 수 있습니다. 그러면 cmake install 명령어가 실행됩니다. 아니면 CLion의 실행 구성 중 하나에 Install(설치) 단계를 추가해도 됩니다.

CMake 주석

CMake 주석

CLion은 CMake 3의 대괄호로 묶인 인수와 블록 주석 구문을 지원합니다. CMake에서 명령줄에 주석을 빠르게 달려면 해당 줄을 선택할 필요 없이 Ctrl+/를 눌러 그곳에 캐럿을 삽입하면 됩니다. 블록에 주석을 추가하려면 해당 블록을 선택한 후 Ctrl+Shift+/을 누르세요.

CMakeLists.txt 코딩 지원

CLion의 CMake 파일 에디터를 사용하면 CMakeLists.txt 파일을 쉽게 편집할 수 있습니다. 다음의 기능이 포함됩니다.

  • CMake 글꼴 및 색상 설정.
  • CMake의 다양한 코드 영역을 접거나 펼치는 기능.
  • CMake 명령어 및 변수 코드 완성.
  • CMake와 번들로 제공되는 패키지에 대한 find_package 코드 완성.
  • 코드 완성의 CMake 명령어 문서.
  • CMake 구조 뷰.
  • CMake에서 사용되지 않는 명령어에 취소선을 적용한 강조 표시.
CMake 완성, 코드 생성 및 자동 액션

CMake에서 코드 생성

CMake에서 자주 사용하는 사용자 지정 코드 구문을 만들어 라이브 템플릿에서 다시 사용할 수 있습니다. 그리고 사전 정의된 템플릿 중에서 선택하거나 사용자 지정 템플릿을 만들 수도 있습니다.

템플릿을 사용하려면 약자를 입력(여기에도 자동 완성 기능 사용 가능)한 다음 Tab(또는 기본 키가 아닌 사용자가 구성한 키)을 눌러 템플릿을 확장하세요.

편집을 완료하면, 현재 프로젝트를 직접 다시 로드하도록 선택하거나 모든 편집 내용을 자동으로 다시 로드하도록 설정할 수 있는 배너가 표시됩니다.

CMake 빠른 문서

CMake 빠른 문서

이제 CMake 스크립트에서 Quick Documentation(빠른 문서) 팝업이 지원됩니다. 빠른 문서가 표시되는 표준 CMake 엔티티는 다음과 같습니다.

  • 명령어
  • 정책
  • 모듈
  • 변수
  • 프로퍼티

문서는 현재 번들로 제공되는 CMake 버전에서 항상 렌더링되며, 현재 사용자 정의 엔티티에는 지원되지 않습니다.

CMake 디버그

CMake 디버거

CMake는 빌드 시스템 언어이므로 CMake 스크립트에서 오류를 조사하고 의심스러운 동작을 발견하기는 쉽지 않습니다. CLion에서 CMake 스크립트를 일반 코드로 디버그할 수 있습니다. 중단점을 설정하고, 코드를 단계별로 실행하고, CMake 변수 및 대상을 확인하세요. 자세히 알아보기

CMake 프로파일링

CMake 프로파일링

CLion에서 CMake 프로젝트를 다시 로드할 때 시간이 오래 걸리는 이유를 시각적으로 검사하여 파악할 수 있습니다. CMake 3.18 버전부터 CMake 설정에서 새로운 추적 기능을 활성화할 수 있습니다. CLion은 추적을 실행하고 결과를 시각화하는 데 유용합니다. 자세히 알아보기