Visual Studio의 CMake 프로젝트

CMake는 여러 플랫폼에서 실행되는 빌드 프로세스를 정의하는 플랫폼 간 오픈 소스 도구입니다. 이 문서에서는 CMake에 익숙하다고 가정합니다. CMake에 대한 자세한 내용은 CMake 설명서를 참조하세요. CMake 자습서는 자세히 알아볼 수 있는 적절한 시작점입니다.

참고 항목

CMake는 몇 번의 릴리스를 통해 Visual Studio와 더 긴밀히 통합되었습니다. 기본 설정된 버전의 Visual Studio에 대한 설명서를 보려면 버전 선택기 컨트롤을 사용하세요. 이 페이지의 목차 맨 위에 있습니다.

CMake에 대한 Visual Studio의 네이티브 지원을 사용하여 동일한 Visual Studio 인스턴스의 원격 시스템, Windows, WSL(Linux용 Windows 하위 시스템)에서 CMake 프로젝트를 편집, 빌드, 디버그할 수 있습니다. CMake 프로젝트 파일(예: CMakeLists.txt)은 IntelliSense 및 검색을 위해 Visual Studio에서 직접 사용됩니다. cmake.exe는 CMake 구성과 빌드를 위해 Visual Studio에 의해 직접 호출됩니다.

설치

Windows용 C++ CMake 도구C++를 사용한 데스크톱 개발 워크로드 및 C++를 사용한 Linux 개발 워크로드의 일부로 설치됩니다. 플랫폼 간 CMake 개발에는 Windows용 C++ CMake 도구C++를 사용한 Linux 개발이 둘 다 필요합니다.

Visual Studio 설치 프로그램 스크린샷.

설치 관리자에서 C++ 드롭다운이 포함된 데스크톱 개발이 선택되고 Windows용 C++ C Make 도구가 선택됩니다."

자세한 내용은 Visual Studio에서 C++ Linux 워크로드 설치를 참조하세요.

IDE 통합

CMakeLists.txt 파일이 포함된 폴더를 열면 다음 작업이 수행됩니다.

Visual Studio가 시작될 때 열리는 첫 번째 대화 상자의 스크린샷.

대화 상자에서는 리포지토리 복제, 프로젝트 또는 솔루션 열기, 로컬 폴더 열기 또는 새 프로젝트 만들기 등의 옵션을 제공합니다. 로컬 폴더 열기가 스크린샷에서 호출됩니다.

  • Visual Studio에서 CMake 항목을 CMake 스크립트를 보고 편집하는 명령과 함께 프로젝트 메뉴에 추가합니다.

  • 솔루션 탐색기에 폴더 구조와 파일이 표시됩니다.

  • Visual Studio에서 CMake를 실행하고 기본 구성에 대한 CMake 캐시 파일(CMakeCache.txt)을 생성합니다. CMake 명령줄이 CMake의 다른 출력과 함께 출력 창에 표시됩니다.

  • IntelliSense, 검색 정보, 리팩터링 등을 사용할 수 있도록 하기 위해 Visual Studio에서 백그라운드로 소스 파일을 인덱싱합니다. 작업하는 동안 Visual Studio에서 편집기와 디스크의 변경 내용을 모니터링하여 인덱스가 소스와 동기화되도록 유지합니다.

참고 항목

Visual Studio 2022 버전 17.1 미리 보기 2부터 최상위 수준 CMakeLists.txt이(가) 작업 영역의 루트가 아닌 하위 폴더에 있는 경우 CMake 통합을 사용하도록 설정할지 여부를 묻는 메시지가 표시됩니다. 자세한 내용은 CMake 부분 활성화를 참조하세요.

CMake 캐시 생성에 성공하면 대상별로 논리적으로 구성된 프로젝트도 볼 수 있습니다. 솔루션 탐색기 도구 모음에서 보기 선택 단추를 선택합니다. 솔루션 탐색기 - 보기의 목록에서 CMake 대상 보기를 선택하고 Enter 키를 눌러 대상 보기를 엽니다.

솔루션 탐색기 보기 창의 스크린샷. 폴더 보기가 열려 있습니다. C Make 대상 보기 옵션이 강조 표시되어 있습니다.

out/build/<config> 폴더에 있는 CMake로 생성된 모든 출력을 보려면 솔루션 탐색기 맨 위에 있는 모든 파일 표시 단추를 선택합니다.

CMake 프로젝트에서와 동일한 방식으로 각 프로젝트 폴더에서 CMakeLists.txt 파일을 사용합니다. 소스 파일을 지정하고, 라이브러리를 찾고, 컴파일러 및 링커 옵션을 설정하고, 다른 빌드 시스템 관련 정보를 지정할 수 있습니다. Visual Studio에서 제공하는 CMake 언어 서비스에 관한 자세한 내용은 CMakeLists.txt 파일 편집을 참조하세요.

Visual Studio는 CMake 구성 파일을 사용하여 CMake 캐시 생성과 빌드를 수행합니다. 자세한 내용은 CMake 프로젝트 구성CMake 프로젝트 빌드를 참조하세요.

디버그 시 인수를 실행 파일에 전달하려면 launch.vs.json이라는 다른 파일을 사용할 수 있습니다. Visual Studio에서 플랫폼 간 CMake 프로젝트 디버그에 관한 자세한 내용은 CMake 프로젝트 디버그를 참조하세요.

대부분 Visual Studio 및 C++ 언어 기능은 Visual Studio의 CMake 프로젝트에서 지원됩니다. 예를 들면 다음과 같습니다.

참고 항목

다른 종류의 폴더 열기 프로젝트의 경우 추가 JSON 파일 CppProperties.json이 사용됩니다. 이 파일은 CMake 프로젝트와 관련이 없습니다.

CMake 프로젝트 구성

CMake 구성 단계는 프로젝트 빌드 시스템을 생성합니다. 명령줄에서 cmake.exe을(를) 호출하는 것과 같습니다. CMake 구성 단계에 관한 자세한 내용은 CMake 설명서를 참조하세요.

Visual Studio는 CMake 구성 파일을 사용하여 CMake 생성과 빌드를 수행합니다. CMakePresets.json은(는) Visual Studio 2019 버전 16.10 이상에서 지원되며 권장되는 CMake 구성 파일입니다. CMakePresets.json은(는) CMake에서 직접 지원되며 Visual Studio, VS Code, 연속 통합 파이프라인, Windows/Linux/Mac의 명령줄에서 CMake 생성과 빌드를 수행하는 데 사용할 수 있습니다. CMakePresets.json에 관한 자세한 내용은CMake 사전 설정으로 구성 및 빌드를 참조하세요. CMakeSettings.json은(는) 이전 버전의 Visual Studio를 사용하는 고객이 사용할 수 있습니다. CMakeSettings.json에 관한 자세한 내용은 CMake 빌드 설정 사용자 지정을 참조하세요.

CMake 구성 파일 또는 CMakeLists.txt 파일을 크게 변경하면 Visual Studio는 CMake 구성 단계를 자동으로 실행합니다. 구성 단계를 수동으로 호출할 수 있습니다. 도구 모음에서 프로젝트 > 구성 캐시를 선택합니다. 도구>옵션>CMake>일반에서 구성 기본 설정을 변경할 수도 있습니다.

Visual Studio 설정 창의 CMake 구성 옵션 스크린샷.

CMake 구성 설정이 호출됩니다. C Make 캐시 알림 표시가 선택되었습니다. '캐시가 만료된 경우:'에서 '자동으로 구성 단계 실행 안 됨' 옵션이 선택됩니다.

구성 단계가 오류 없이 완료되면 사용 가능한 정보가 C++ IntelliSense 및 언어 서비스에 사용됩니다. 빌드 및 디버그 작업에도 사용됩니다.

Visual Studio에서 기존 CMake 캐시를 열 수도 있습니다. 자세한 내용은 기존 캐시 열기를 참조하세요.

구성 피드백 및 알림 사용자 지정

기본적으로 오류가 발생하지 않는 한 구성 메시지는 대부분 표시되지 않습니다. 모든 메시지를 보려면 도구>옵션>CMake>자세한 CMake 진단 출력 사용을 선택합니다.

CMake 캐시 알림 표시를 선택 취소하여 모든 CMake 캐시 알림(금색 막대)을 사용하지 않도록 설정할 수도 있습니다.

CMake 캐시 오류 문제 해결

문제를 진단하는 데 CMake 캐시의 상태에 대한 추가 정보가 필요하면, 프로젝트 주 메뉴 또는 솔루션 탐색기CMakeLists.txt 상황에 맞는 메뉴를 열어 다음 명령 중 하나를 실행합니다.

  • CMakeCache.txt 보기는 편집기의 빌드 디렉터리에서 CMakeCache.txt 파일을 엽니다. 캐시를 정리하면 여기서 CMakeCache.txt를 편집한 내용이 모두 지워집니다. 캐시 정리 후에도 변경 내용이 유지되도록 하려면 CMake 설정 사용자 지정 또는 CMake 사전 설정으로 구성 및 빌드를 참조하세요.

  • 캐시 삭제 및 다시 구성은 빌드 디렉터리를 삭제하고 정리 캐시에서 다시 구성합니다.

  • 캐시 구성은 Visual Studio에서 최신 환경으로 간주하는 경우에도 생성 단계를 강제로 실행합니다.

CMake 프로젝트 빌드

CMake 빌드 단계는 이미 생성된 프로젝트 이진 트리를 빌드합니다. 명령줄에서 cmake --build을(를) 호출하는 것과 같습니다. CMake 빌드 단계에 관한 자세한 내용은 CMake 설명서를 참조하세요.

CMake 프로젝트를 빌드하려면 다음과 같이 선택할 수 있습니다.

  1. 도구 모음에서 시작 항목 드롭다운을 찾습니다. 기본 설정 대상을 선택하고 F5 키를 누르거나 도구 모음에서 실행 단추를 선택합니다. Visual Studio 솔루션과 마찬가지로 프로젝트가 자동으로 먼저 빌드됩니다.

  2. 솔루션 탐색기에서 CMake 대상 보기가 활성화된 CMake 대상을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 빌드를 선택합니다.

  3. 주 메뉴에서 빌드 > 모두 빌드를 선택합니다. 도구 모음의 시작 항목 드롭다운에서 CMake 대상이 이미 선택되어 있는지 확인합니다.

빌드 결과가 예상한 대로 출력 창오류 목록에 표시됩니다.

Visual Studio 오류 목록 창의 스크린샷 부동 소수점에서 정수로 변환하는 등의 데이터 손실을 초래할 수 있는 변환에 대한 CMake 빌드 경고가 표시됩니다. :::image-end:::

빌드 설정 편집

Visual Studio는 CMake 구성 파일을 사용하여 CMake 빌드를 수행합니다. CMake 구성 파일은 네이티브 빌드 도구 스위치, 환경 변수와 같은 빌드 옵션을 캡슐화합니다. CMakePresets.json이(가) 활성 구성 파일인 경우 CMake 사전 설정으로 구성 및 빌드를 참조하세요. CMakeSettings.json이(가) 활성 구성 파일인 경우 CMake 빌드 설정 사용자 지정을 참조하세요. CMakePresets.json은(는) Visual Studio 2019 버전 16.10 이상에서 사용할 수 있으며 권장되는 CMake 구성 파일입니다.

CMake 프로젝트 디버깅

실행 가능한 모든 CMake 대상은 도구 모음의 시작 항목 드롭다운에 표시됩니다. 디버깅을 시작하려면 도구 모음에서 디버그 > 디버깅 시작 단추를 누릅니다. CMake 프로젝트에서 “현재 문서” 옵션은 .cpp 파일에만 유효합니다.

Visual Studio 디버그 드롭다운의 스크린샷.

드롭다운에는 디버그 대상, 현재 문서, 샘플(강조 표시), box2d_tests 및 samples-noGUI 표시/숨기기 옵션이 있습니다.

디버그 또는 F5 명령은 이전 빌드 이후 변경된 경우 프로젝트를 먼저 빌드합니다. CMake 구성 파일(CMakePresets.json 또는 CMakeSettings.json)을 변경하거나 CMakeLists.txt을(를) 변경하면 CMake 캐시를 다시 생성합니다.

launch.vs.json 파일의 속성을 설정하여 CMake 디버깅 세션을 사용자 지정할 수 있습니다. 특정 대상의 디버그 설정을 사용자 지정하려면 시작 항목 드롭다운에서 대상을 선택하고 디버그 <활성 대상>에 대한 > 디버그 및 시작 설정을 누릅니다. CMake 디버깅 세션에 관한 자세한 내용은 CMake 디버깅 세션 구성을 참조하세요.

CMake 프로젝트에 대한 내 코드만

MSVC 컴파일러를 사용하여 Windows용으로 빌드할 때 CMake 프로젝트는 내 코드만 디버깅을 지원합니다. 내 코드만 설정을 변경하려면 도구>옵션>디버깅>일반으로 이동합니다.

CMake 프로젝트의 편집하며 계속하기

MSVC 컴파일러를 사용하여 Windows용으로 빌드하는 경우 CMake 프로젝트는 편집하며 계속하기를 지원합니다. CMakeLists.txt 파일에 다음 코드를 추가하여 편집하며 계속하기를 사용하도록 설정합니다.

if(MSVC)
  target_compile_options(<target> PUBLIC "/ZI")
  target_link_options(<target> PUBLIC "/INCREMENTAL")
endif()

Linux에서 실행되는 CMake 프로젝트에 연결

Visual Studio를 사용하여 원격 Linux 시스템 또는 WSL에서 실행되는 프로세스를 디버그하고 GDB 디버거를 통해 디버그할 수 있습니다. 시작하려면 디버그>프로세스에 연결...을 선택하고, 연결 형식SSH로 설정하고, 연결 관리자의 연결 목록에서 연결 대상을 선택합니다. 사용 가능한 프로세스 목록에서 프로세스를 선택하고 연결을 누릅니다. Linux 머신에 GDB가 설치되어 있어야 합니다. SSH 연결에 관한 자세한 내용은 연결 관리자를 참조하세요.

Visual Studio의 프로세스에 연결 메뉴 스크린샷.

대화 상자에서 사용할 수 있는 옵션은 연결 유형(SSH로 설정), 연결 대상(demo@로 설정 172. 20. 60. 6) 및 연결할 수 있는 사용 가능한 프로세스 목록입니다."

CMake 부분 활성화

Visual Studio 2022 버전 17.1 이상에서는 루트 폴더에 CMakeLists.txt 파일이 없는 경우 CMake 기능이 자동으로 사용하도록 설정되지 않습니다. 대신 프로젝트에 CMake 기능을 사용하도록 설정할지 여부를 묻는 대화 상자가 표시됩니다. 거절하면 CMake 캐시 생성이 시작되지 않으며 CMake 구성(CMakeSettings.json 또는 CMakePresets.json)이 구성 드롭다운에 표시되지 않습니다. 수락하면 작업 영역 수준 구성 파일 CMakeWorkspaceSettings.json (.vs 디렉터리에 저장됨)으로 이동하여 CMake를 사용하도록 설정할 폴더를 지정합니다. (이러한 폴더에는 루트 CMakeLists.txt 파일이 포함되어 있습니다).

허용되는 속성은 다음과 같습니다.

속성 설명
enableCMake 이 작업 영역에 대해 Visual Studio의 통합을 사용하도록 설정합니다.
sourceDirectory CMakeLists.txt(으)로 디렉터리를 지정하는 문자열 또는 문자열의 배열입니다. 매크로(예: ${workspaceRoot})가 허용됩니다. 상대 경로는 작업 영역 루트를 기반으로 합니다. 현재 작업 영역 외부의 디렉터리도 무시됩니다.

CMake 기능이 현재 비활성화되어 있더라도 언제든지 Project>CMake 작업 영역 설정 메뉴 명령을 통해 CMakeWorkspaceSettings.json에 도달할 수 있습니다.

기존 캐시 열기

기존 CMake 캐시 파일(CMakeCache.txt)을 열면 Visual Studio에서 사용자의 캐시 및 빌드 트리를 관리하려고 시도하지 않습니다. 사용자 지정 또는 선호하는 도구가 CMake에서 프로젝트를 구성하는 방법을 완벽하게 제어할 수 있습니다.

열려 있는 프로젝트에 기존 CMake 캐시를 추가할 수 있습니다. 이 작업은 새 구성을 추가하는 것과 동일한 방식입니다. 자세한 내용은 Visual Studio에서 기존 캐시 열기에 대한 블로그 게시물을 참조하세요.

참고 항목

기본 기존 캐시 환경은 cmake-server를 사용하며, 이는 CMake 버전 3.20에서 제거되었습니다. Visual Studio 2019 버전 16.10 이상에서 기존 캐시 기능을 계속 사용하려면 다음 단계 중 하나를 수행하세요.

  • CMake 버전 3.19 이하를 수동으로 설치합니다. 그런 다음, 해당 버전의 CMake를 사용하도록 기존 캐시 구성에 cmakeExecutable 속성을 설정합니다.
  • 기존 캐시 구성에서 Visual Studio가 필요한 CMake 파일 기반 API 파일을 요청하도록 cacheGenerationCommand 속성을 설정합니다. 해당 속성에 대한 자세한 내용은 CMakeSettings.json 참조를 확인하세요.
  • Visual Studio에서 열기 전에 캐시를 생성할 때 쿼리 파일을 사용하여 CMake 파일 기반 API 파일을 요청합니다. 쿼리 파일 지침에 대해서는 다음 섹션인 고급 CMake 캐시 문제 해결을 참조하세요.

고급 CMake 캐시 문제 해결

Visual Studio는 버전 3.14 이상에서 CMake의 파일 기반 API를 사용하여 프로젝트 구조와 관련된 정보로 편집기를 채웁니다. 자세한 내용은 다중 루트 작업 영역 및 파일 기반 API에 대한 C++ 팀 블로그 게시물을 참조하세요.

CMake 캐시를 생성하기 전에 사용자 지정 또는 기본 도구에서 빌드 출력 폴더(CMakeCache.txt을(를) 포함하는 폴더)에 .cmake/api/v1/query/client-MicrosoftVS/query.json이라는 쿼리 파일을 만들어야 할 수 있습니다. 이 쿼리 파일에는 다음 콘텐츠가 포함되어야 합니다.

{"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}

사용자 지정 도구 또는 선호하는 도구에서 캐시를 생성하면 CMake는 Visual Studio에서 프로젝트 구조와 관련된 정보로 편집기를 채우는 데 사용하는 파일을 .cmake/api/v1/response 아래에 배치합니다.

CMakeLists.txt 파일 편집

CMakeLists.txt 파일을 편집하려면 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다. 파일을 변경하는 경우 노란색 상태 표시줄이 나타나고 IntelliSense가 업데이트될 것임을 알려 줍니다. 업데이트 작업을 취소할 수 있는 기회가 제공됩니다. CMakeLists.txt에 대한 자세한 내용은 CMake 설명서를 참조하세요.

Visual Studio에서 편집 중인 C Make 목록 .txt 파일의 스크린샷.

여기에는 줄 프로젝트(hello-cmake), add_subdirectory(테스트), add_executable(hello hello.cpp) 및 설치(TARGETS hello DESTINATION hello/bin)가 포함됩니다. 창 맨 위에 있는 메시지에는 C Make가 캐시 생성을 완료한 후 c++ IntelliSense 정보가 새로 고쳐진다는 내용이 나와있습니다.

파일을 저장하는 즉시 구성 단계가 자동으로 다시 실행되고 출력 창에 정보가 표시됩니다. 오류와 경고가 오류 목록 또는 출력 창에 표시됩니다. 오류 목록에서 오류를 두 번 클릭하여 CMakeLists.txt에서 잘못된 줄로 이동합니다.

Visual Studio 오류 목록의 C Make 오류 스크린샷.

CMakeLists.txt의 3행에 있는 C Make 오류 메시지가 강조 표시되어 있습니다. 자세한 내용은 C Make가 sqlite3에서 제공하는 패키지 구성 파일을 찾을 수 없다는 것입니다. C Make가 CMAKE_MODULE_PATH에서 찾았지만 찾을 수 없습니다. 설치 접두사 'sqlite3'을 CMAKE_PREFIX_PATH에 추가하거나 sqlite3Config.cmake 및/또는 sqlitet3-config.cmake를 포함하는 디렉터리에 sqlite3_DIR을 설정하는 것이 좋습니다.

CMake에 대한 언어 서비스

CMake에 대한 언어 서비스는 Visual Studio 2019 버전 16.5 이상에서 사용할 수 있습니다. 정의로 이동, 정의 피킹, 모든 참조 찾기와 같은 코드 탐색 기능은 CMake 스크립트 파일의 CMake 변수, 함수 및 대상에 대해 지원됩니다. 자세한 내용은 CMake 스크립트에 대한 코드 탐색을 참조하세요.

Visual Studio 모든 참조 찾기 창의 스크린샷.

SUPERTUX_SOURCES_CXX가 발견된 위치의 결과가 표시됩니다. 예를 들어 list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) 등이 있습니다.

CMake 프로젝트 조작

CMake 프로젝트 조작은 Visual Studio 2019 버전 16.5 이상에서 사용할 수 있습니다. 프로젝트 조작을 사용하면 CMake 스크립트를 수동으로 편집하지 않고 CMake 프로젝트의 소스 파일과 대상을 추가하고, 제거하고, 이름을 바꿀 수 있습니다. 솔루션 탐색기에서 파일을 추가하거나 제거하는 경우 Visual Studio가 CMake 프로젝트를 자동으로 편집합니다. CMake 스크립트에 대한 참조를 추가하거나 제거하는 것이 적합한 위치가 두 개 이상 있을 수 있습니다. 그렇다면 Visual Studio에서 변경할 위치를 묻고 제안된 변경 내용의 미리 보기를 표시합니다. 단계별 지침은 CMake 프로젝트에서 파일 및 대상을 추가, 제거 및 이름 바꾸기를 참조하세요.

Visual Studio 미리 보기 변경 내용 대화 상자의 스크린샷.

트리 뷰에는 CMakeLists.txt가 표시되며 그 아래에는 add_executable 및 집합이라는 두 항목이 있습니다. 집합이 선택되어 있습니다. 미리 보기 창에는 변경 내용이 표시됩니다. 줄 집합(PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h"는 닫는 괄호 앞에 강조 표시된 "Demo.cpp"를 표시합니다. 적용 단추가 변경 내용을 수락하거나 취소를 누를 수 있습니다.

CMake 프로젝트에 대한 IntelliSense

기본적으로 Visual Studio는 활성 CMake 구성에서 지정한 컴파일러 및 대상 아키텍처와 일치하는 IntelliSense 모드를 사용합니다.

CMakePresets.json이(가) 활성 CMake 구성 파일인 경우 Visual Studio 설정 공급업체 맵의 intelliSenseModeintelliSenseOptions을(를) 사용하여 IntelliSense 옵션을 지정할 수 있습니다. 자세한 내용은 Visual Studio 설정 공급업체 맵 참조를 참조하세요.

CMakeSettings.json이(가) 활성 CMake 구성 파일인 경우 CMakeSettings.json에서 intelliSenseMode을(를) 사용하여 IntelliSense 옵션을 지정할 수 있습니다. 자세한 내용은 CMakeSettings.json참조를 참조하세요.

CMake 도구 체인 파일을 사용하여 IntelliSense 구성

Visual Studio 2019 버전 16.9 이상에서 Visual Studio는 CMake 도구 체인 파일을 사용할 때 CMake 변수를 기반으로 CMake 프로젝트에서 IntelliSense를 자동으로 구성합니다. 자세한 내용은 CMake 도구 체인 파일을 사용하여 IntelliSense 구성을 참조하세요.

Vcpkg 통합

Visual Studio에서 열린 CMake 프로젝트는 플랫폼 간 C/C++ 종속성 관리자인 vcpkg와 통합됩니다. Visual Studio와 함께 vcpkg를 사용하려면 먼저 vcpkg integrate install을 실행해야 합니다. vcpkg에 대한 지침 및 자세한 내용은 다음을 참조하세요.

CMakeSettings.json이(가) 활성 구성 파일인 경우 Visual Studio는 vcpkg 도구 체인 파일(vcpkg.cmake)을 CMake에 자동으로 전달합니다. 이 동작은 CMake 설정 구성에서 다른 도구 체인을 지정하는 경우 자동으로 비활성화됩니다.

CMakePresets.json이(가) 활성 구성 파일인 경우 경로를 CMakePresets.json에서 vcpkg.cmake(으)로 설정해야 합니다. 절대 경로 대신 VCPKG_ROOT 환경 변수를 사용하여 파일을 공유 가능한 상태로 유지하는 것이 좋습니다. 자세한 내용은 CMake 사전 설정과 vcpkg 통합 사용을 참조하세요. CMakePresets.json은(는) Visual Studio 2019 버전 16.10 이상에서 사용할 수 있으며 권장되는 CMake 구성 파일입니다.

명령줄에서 CMake 실행

CMakePresets.json이(가) 활성 CMake 구성 파일인 경우 Visual Studio 외부에서 로컬 빌드를 쉽게 재현할 수 있습니다. 자세한 내용은 명령줄 또는 CI 파이프라인에서 CMake 실행을 참조하세요. CMakePresets.json은(는) Visual Studio 2019 버전 16.10 이상에서 지원되며 권장되는 CMake 구성 파일입니다.

CMakeSettings.json이(가) 활성 CMake 구성 파일인 경우 CMakeSettings.json 파일에서 인코딩된 인수를 CMake에 수동으로 전달해야 합니다. Visual Studio 설치 관리자에서 CMake를 설치한 경우 다음 단계에 따라 명령줄에서 이를 실행할 수 있습니다.

  1. 적절한 vsdevcmd.bat 파일(x86/x64)을 실행합니다. 자세한 내용은 명령줄에서 빌드를 참조하세요.

  2. 출력 폴더로 전환합니다.

  3. CMake를 실행하여 앱을 빌드 또는 구성합니다.

Visual Studio 2017에서는 플랫폼 간 CMake 프로젝트를 포함하여 CMake에 대한 풍부한 지원을 제공합니다. CMake용 Visual C++ 도구 구성 요소에서 폴더 열기 기능을 사용하여 IDE에서 IntelliSense 및 검색을 수행하는 데 CMake 프로젝트 파일(예: CMakeLists.txt)을 직접 사용할 수 있습니다. Ninja 및 Visual Studio 생성기 모두 지원됩니다. Visual Studio 생성기를 사용하는 경우 임시 프로젝트 파일을 생성하여 MSBuild에 전달합니다. 그러나 프로젝트는 IntelliSense 또는 검색 용도로 로드되지 않습니다. 기존 CMake 캐시를 가져올 수도 있습니다.

설치

CMake용 Visual C++ 도구C++를 사용한 데스크톱 개발 워크로드 및 C++를 사용한 Linux 개발 워크로드의 일부로 설치됩니다.

Visual Studio 설치 관리자 스크린샷. CMake용 Visual C++ 도구가 선택된 개별 구성 요소 탭이 선택됩니다.

자세한 내용은 Visual Studio에서 C++ Linux 워크로드 설치를 참조하세요.

IDE 통합

파일 > 열기 > 폴더를 선택하여 CMakeLists.txt 파일이 포함된 폴더를 열면 다음 작업이 수행됩니다.

  • Visual Studio에서 CMake 스크립트를 보고 편집하는 명령이 있는 CMake 메뉴 항목이 주 메뉴에 추가됩니다.

  • 솔루션 탐색기에서 폴더 구조와 파일이 표시됩니다.

  • Visual Studio에서 CMake를 실행하고 선택적으로 x86 디버그인 기본 ‘구성’에 대한 CMake 캐시를 생성합니다. CMake 명령줄이 CMake의 다른 출력과 함께 출력 창에 표시됩니다.

  • IntelliSense, 검색 정보, 리팩터링 등을 사용할 수 있도록 하기 위해 Visual Studio에서 백그라운드로 소스 파일을 인덱싱합니다. 작업하는 동안 Visual Studio에서 편집기와 디스크의 변경 내용을 모니터링하여 인덱스가 소스와 동기화되도록 유지합니다.

여러 CMake 프로젝트가 포함된 폴더를 열 수 있습니다. Visual Studio에서는 작업 영역의 모든 “루트” CMakeLists.txt 파일을 검색하고 구성합니다. CMake 작업(구성, 빌드, 디버그), C++ IntelliSense 및 검색을 작업 영역의 모든 CMake 프로젝트에서 사용할 수 있습니다.

Visual Studio 솔루션 탐색기의 스크린샷.

CMake 프로젝트의 파일과 폴더가 표시됩니다. 테스트 하위 디렉터리, CMakeLists.txt 및 hello.cpp가 있습니다. CMakeLists.txt, CMakeSettings.json 및 hello.cpp를 포함하는 hello-cmake-vcpkg 폴더가 있습니다.

대상별로 논리적으로 구성된 프로젝트를 볼 수도 있습니다. 솔루션 탐색기 도구 모음의 드롭다운 목록에서 대상 보기를 선택합니다.

CMake 대상 보기 옵션을 제공하는 Visual Studio 솔루션 탐색기의 드롭다운 단추 스크린샷. 선택됩니다.

Visual Studio는 CMakeSettings.json이라는 파일을 사용하여 CMake에 대한 환경 변수 또는 명령줄 옵션을 저장합니다. CMakeSettings.json을 사용하여 여러 CMake 빌드 구성을 정의하고 저장할 수도 있습니다. IDE에서 이들 사이를 편리하게 전환할 수 있습니다.

그렇지 않으면 CMake 프로젝트에서처럼 CMakeLists.txt를 사용하여 소스 파일을 지정하고, 라이브러리를 찾고, 컴파일러와 링커 옵션을 설정하고, 기타 빌드 시스템 관련 정보를 지정합니다.

디버그 시 인수를 실행 파일에 전달해야 하는 경우 launch.vs.json이라는 다른 파일을 사용할 수 있습니다. 일부 시나리오에서는 Visual Studio에서 자동으로 이러한 파일을 생성합니다. 파일을 수동으로 편집하거나 직접 만들 수도 있습니다.

참고 항목

다른 종류의 폴더 열기 프로젝트의 경우 두 개의 추가 JSON 파일(CppProperties.jsontasks.vs.json)이 사용됩니다. 이 두 가지 모두 CMake 프로젝트와 관련이 없습니다.

기존 캐시 가져오기

기존 CMakeCache.txt 파일을 가져오면 Visual Studio는 자동으로 사용자 지정 변수를 추출하고 이에 따라 미리 채워진 CMakeSettings.json 파일을 만듭니다. 원래 캐시는 어떤 방식으로든 수정되지 않습니다. 명령줄에서 또는 이를 생성하는 데 사용된 도구 또는 IDE와 함께 계속 사용할 수 있습니다. 새 CMakeSettings.json 파일은 프로젝트의 루트 CMakeLists.txt와 함께 배치됩니다. Visual Studio에서는 설정 파일을 기반으로 하여 새 캐시를 생성합니다. 도구 > 옵션 > CMake > 일반 대화 상자에서 자동 캐시 생성을 재정의할 수 있습니다.

캐시의 모든 항목을 가져오지는 않습니다. 생성기 및 컴파일러 위치와 같은 속성은 IDE에서 제대로 작동하는 것으로 알려진 기본값으로 대체됩니다.

기존 캐시를 가져오려면

  1. 주 메뉴에서 파일 > 열기 > CMake를 선택합니다.

    Visual Studio 주 메뉴의 스크린샷. 파일 > 열기 > C 메이크가 선택되었습니다.

    이 명령은 캐시에서 CMake 가져오기 마법사를 엽니다.

  2. 가져오려는 CMakeCache.txt 파일로 이동한 다음, 확인을 선택합니다. 캐시에서 CMake 프로젝트 가져오기 마법사가 표시됩니다.

    캐시에서 CMake 프로젝트 가져오기 마법사 스크린샷. 가져올 CMake 프로젝트의 디렉터리 경로는 '폴더' 텍스트 상자에 있습니다.

    마법사가 완료되면 솔루션 탐색기에서 프로젝트의 루트 CMakeLists.txt 파일 옆에 새 CMakeCache.txt 파일이 표시됩니다.

CMake 프로젝트 빌드

CMake 프로젝트를 빌드하려면 다음과 같이 선택할 수 있습니다.

  1. 일반 도구 모음에서 구성 드롭다운을 찾습니다. 기본적으로 "Linux-Debug" 또는 "x64-Debug"가 표시될 것입니다. 기본 구성을 선택하고 F5 키를 누르거나 도구 모음에서 실행(녹색 삼각형) 단추를 누릅니다. Visual Studio 솔루션과 마찬가지로 프로젝트가 자동으로 먼저 빌드됩니다.

  2. 솔루션 탐색기에서 CMakeLists.txt를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 빌드를 선택합니다. 폴더 구조에 여러 대상이 있는 경우 모든 대상 또는 특정 대상만 빌드하도록 선택할 수 있습니다.

  3. 주 메뉴에서 빌드 > 솔루션 빌드(F7 키 또는 Ctrl+Shift+B)를 선택합니다. 일반 도구 모음의 시작 항목 드롭다운에서 CMake 대상이 이미 선택되어 있는지 확인합니다.

CMakeLists.txt 마우스 오른쪽 단추로 클릭한 후 Visual Studio 솔루션 탐색기의 스크린샷.

메뉴에는 추가, 열기, 작업 구성, 빌드, 모두 정리 등의 옵션이 있습니다.

CMakeSettings.json 파일에서 빌드 구성, 환경 변수, 명령줄 인수 및 기타 설정을 사용자 지정할 수 있습니다. CMakeLists.txt 파일을 수정하지 않고 변경할 수 있습니다. 자세한 내용은 CMake 설정 사용자 지정을 참조하세요.

빌드 결과가 예상한 대로 출력 창오류 목록에 표시됩니다.

Visual Studio 오류 목록 창의 스크린샷.

부동 소수점에서 정수로 변환하는 등의 데이터 손실을 초래할 수 있는 변환에 대한 CMake 빌드 경고가 표시됩니다.

여러 빌드 대상이 있는 폴더에서 CMake 메뉴 또는 CMakeLists.txt 상황에 맞는 메뉴의 빌드 항목을 선택하여 대상을 지정할 수 있습니다. CMake 프로젝트에서 Ctrl+Shift+B를 입력하면 현재 활성 문서가 빌드됩니다.

CMake 프로젝트 디버깅

CMake 프로젝트를 디버그하려면 기본 구성을 선택하고 F5 키를 누릅니다. 또는 도구 모음에서 실행 단추를 누릅니다. 실행 단추에서 "시작 항목 선택"이라고 표시되면 드롭다운 화살표를 선택하고 실행할 대상을 선택합니다. (CMake 프로젝트에서 "현재 문서" 옵션은 .cpp 파일에만 유효합니다.)

CMake 프로젝트에 대한 시작 항목 선택 드롭다운의 스크린샷. 현재 문서 또는 hello-cmake.exe를 선택합니다.

실행 또는 F5 명령은 이전 빌드 이후 변경된 경우 프로젝트를 먼저 빌드합니다.

launch.vs.json 파일의 속성을 설정하여 CMake 디버깅 세션을 사용자 지정할 수 있습니다. 자세한 내용은 CMake 디버깅 세션 구성을 참조하세요.

CMakeLists.txt 파일 편집

CMakeLists.txt 파일을 편집하려면 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다. 파일을 변경하는 경우 노란색 상태 표시줄이 나타나고 IntelliSense가 업데이트될 것임을 알려 줍니다. 업데이트 작업을 취소할 수 있는 기회가 제공됩니다. CMakeLists.txt에 대한 자세한 내용은 CMake 설명서를 참조하세요.

Visual Studio에서 편집 중인 C Make 목록 .txt 파일의 스크린샷.

파일에는 프로젝트(hello-cmake), add_subdirectory(테스트), add_executable(hello hello.cpp) 및 설치(TARGETS hello DESTINATION hello/bin)가 포함됩니다. 창 맨 위에 있는 메시지에는 C Make가 캐시 생성을 완료한 후 c++ IntelliSense 정보가 새로 고쳐진다는 내용이 나와있습니다.

파일을 저장하는 즉시 구성 단계가 자동으로 다시 실행되고 출력 창에 정보가 표시됩니다. 오류와 경고가 오류 목록 또는 출력 창에 표시됩니다. 오류 목록에서 오류를 두 번 클릭하여 CMakeLists.txt에서 잘못된 줄로 이동합니다.

Visual Studio 오류 목록의 C Make 오류 스크린샷.

CMakeLists.txt의 3행에 있는 C Make 오류 메시지가 강조 표시되어 있습니다. 자세한 내용은 C Make가 sqlite3에서 제공하는 패키지 구성 파일을 찾을 수 없다는 것입니다. C Make가 CMAKE_MODULE_PATH에서 찾았지만 찾을 수 없습니다. 설치 접두사 'sqlite3'을 CMAKE_PREFIX_PATH에 추가하거나 sqlite3Config.cmake 및/또는 sqlitet3-config.cmake를 포함하는 디렉터리에 sqlite3_DIR을 설정하는 것이 좋습니다.

CMake 구성 단계

CMakeSettings.json 또는 CMakeLists.txt 파일을 크게 변경하면 Visual Studio에서 자동으로 CMake 구성 단계를 다시 실행합니다. 구성 단계가 오류 없이 완료되면 수집된 정보를 C++ IntelliSense 및 언어 서비스에서 사용할 수 있습니다. 빌드 및 디버그 작업에도 사용됩니다.

여러 CMake 프로젝트에서 동일한 CMake 구성 이름(예: x86-Debug)을 사용할 수 있습니다. 해당 구성이 선택되면 이러한 항목이 모두 각 빌드 루트 폴더에서 구성되고 빌드됩니다. 해당 CMake 구성에 참여하는 모든 CMake 프로젝트에서 대상을 디버그할 수 있습니다.

CMake > 빌드 전용으로 열려 있는 Visual Studio의 주 메뉴 스크린샷.

상황에 맞는 메뉴에는 빌드할 수 있는 항목(이 경우 hello-cmake-a \ hello-cmake.exe (Project hello-cmake) 및 hello-cmake-b\hello-cmake.exe (Project hello-cmake))이 표시됩니다. 후자가 강조 표시됩니다.

빌드 및 디버그 세션을 작업 영역에 있는 프로젝트의 하위 집합으로 제한할 수 있습니다. CMakeSettings.json 파일에 고유한 이름을 사용하여 새 구성을 만듭니다. 그런 다음 이 구성을 해당 프로젝트에만 적용합니다. 이 구성을 선택하면 IntelliSense와 빌드 및 디버그 명령이 지정된 프로젝트에만 적용됩니다.

CMake 캐시 오류 문제 해결

문제를 진단하는 데 CMake 캐시의 상태에 대한 추가 정보가 필요하면, CMake 주 메뉴 또는 솔루션 탐색기CMakeLists.txt 상황에 맞는 메뉴를 열어 다음 명령 중 하나를 실행합니다.

  • 캐시 보기는 편집기의 빌드 루트 폴더에서 CMakeCache.txt 파일을 엽니다. (캐시를 정리하면 여기서 CMakeCache.txt을(를) 편집한 내용이 모두 지워집니다. 캐시 정리 후에도 변경 내용이 유지되도록 하려면 CMake 설정 사용자 지정을 참조하세요.)

  • 캐시 폴더 열기는 빌드 루트 폴더에 대한 탐색기 창을 엽니다.

  • 캐시 정리는 다음 CMake 구성 단계를 정리된 캐시에서 시작하도록 빌드 루트 폴더를 삭제합니다.

  • 캐시 생성은 Visual Studio에서 최신 환경으로 간주하는 경우에도 생성 단계를 강제로 수행합니다.

자동 캐시 생성은 도구 > 옵션 > CMake > 일반 대화 상자에서 비활성화할 수 있습니다.

단일 파일 컴파일

CMake 프로젝트에서 단일 파일을 빌드하려면 솔루션 탐색기에서 파일을 마우스 오른쪽 단추로 클릭합니다. 팝업 메뉴에서 컴파일을 선택합니다. 기본 CMake 메뉴를 사용하여 편집기에서 현재 열려 있는 파일을 빌드할 수도 있습니다.

CMake > 컴파일 상황에 맞는 메뉴의 스크린샷. Bullet3Collision이라는 하나의 항목이 포함되어 있습니다.

명령줄에서 CMake 실행

Visual Studio 설치 관리자에서 CMake를 설치한 경우 다음 단계에 따라 명령줄에서 이를 실행할 수 있습니다.

  1. 적절한 vsdevcmd.bat 파일(x86/x64)을 실행합니다. 자세한 내용은 명령줄에서 빌드를 참조하세요.

  2. 출력 폴더로 전환합니다.

  3. CMake를 실행하여 앱을 빌드 또는 구성합니다.

Visual Studio 2015에서 Visual Studio 사용자는 CMake 생성기를 사용하여 MSBuild 프로젝트 파일을 생성합니다. 그러면 IDE에서는 IntelliSense, 검색 및 컴파일에 사용합니다.

참고 항목

자습서: Visual Studio에서 C++ 플랫폼 간 프로젝트 만들기
Linux CMake 프로젝트 구성
원격 Linux 컴퓨터에 연결
CMake 빌드 설정 사용자 지정
CMakeSettings.json 스키마 참조
CMake 디버깅 세션 구성
Linux 프로젝트 배포, 실행 및 디버그
CMake 미리 정의된 구성 참조
CMake 프로젝트의 vcpkg
Visual Studio에서 CMake를 사용하여 패키지 설치 및 사용