VS Code

Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (2/2)

달나라외계인 2022. 10. 27. 20:58

이전글

2022.10.27 - [VS Code] - Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (1/2)


▷ 순서 ◁

1. vcpkg 설치
2. vcpkg 에서 라이브러리 설치
3. cmake 설치
4. vs code에서 cmake 관련 확장 설치
5. cmake 빌드 설정
6. cmake와 vcpkg 라이브러리 설정

 

  이제 VS Code에서 CMake을 설정해 보도록 하겠습니다. CMake는 빌드파일을 생성해 주는 프로그램으로, make 파일 이용시 Makefile을 만들어 주는 역활을 합니다. 혹시 아직 설치를 하지 않으셨다면 apt를 이용하여 설치해 줍니다.

sudo apt install cmake

  설치를 하시는 후에는 VS Code에서 Ctrl+Shift+X를 누르거나 다음의 아이콘을 클릭하여 확장탭으로 이동합니다. 

  이후 다음의 CMake 관련 확장들을 설치해 줍니다. CMake와 CMake Tools입니다.

 

그리고 다음과 같이 빈폴더를 만들고 main.cpp 파일 하나 추가 후 테스트코드를 만들어 보았습니다. (이 코드는 range gitHub의 ReadME.md 파일에 있는 예제입니다. (참고)https://github.com/agauniyal/rang)

  이제 VSCode에서 Ctl+Shift+P를 누르면 명령 팔레트(Command Palette)가 실행됩니다. 명령 팔레트는 다음과 같이 직접 명령어를 입력하여 빠르게 원하는 명령을 찾는데 사용됩니다. 메뉴를 이동해서 클릭하는 것보다 빠르게 찾을 수 있는 경우가 많아서 종종 사용하시면 편리하실 겁니다. 여기서 CMake: Quick Start 를 찾습니다.

그러면 다음과 같이 CMake에 사용할 Kit를 선택하라고 나옵니다. 컴파일 환경을 선택하는 것입니다. 우리는 C++ 빌드를 할 것이므로 GCC 11.2.0 x86_64-linux-gnu를 선택합니다.

그이후 프로젝트명을 기입하라고 나옵니다. 이 이후의 설정에 따라 CMake의 기본 골격을 만들어줍니다. 일단 여기서 기입된 이름으로 프로그램이 만들어져서 빌드됩니다. 저는 'CMakeTest'라고 일단 이름 지었습니다.

그 다음은 빌드 후 무엇을 만들까 결정합니다. 저희는 실행파일을 만들 것이므로 'Executable'를 선택합니다.

이제 다음과 같이 CMake를 위한 CMakeLists.txt가 추가되어 폴더에 추가되었습니다.

F7을 누르면 CMake를 통해 빌드는 시도되지만 rang 라이브러리를 찾지 못해 빌드가 되지 않습니다.

일단 다음과 같이 CMakeLists.txt 파일을 수정하여 rang library를 사용하게 합니다.

cmake_minimum_required(VERSION 3.0.0)
project(CMakeTest VERSION 0.1.0)

include(CTest)
enable_testing()

find_path(rang_INCLUDE_DIR NAMES rang.hpp)
include_directories(${rang_INCLUDE_DIR})
add_executable(CMakeTest main.cpp)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

전반적인 CMakeLists.txt 파일 수정법에 대해서는 여기서 다루지 않겠지만, 일단 여기서 사용된 부분에 대해서라도 간단하게 설명을 드리겠습니다. 기존 내용에서 다음의 두줄이 중간에 추가되었습니다. rang 라이브러리는 헤더만 include 하면 사용할 수 있는 라이브러리이므로 간단합니다. 추가된 두줄의 역활은 다음과 같습니다.


1. find_path(library_name_INCLUDE_DIR NAMES filename)

해당 이름의 파일이 포함된 디렉토리를 찾습니다. 이름의 폴더를 변수로 등록합니다.

2. include_directories(dir)

C++에서 include시 찾을 경로를 추가합니다.


  이렇게 수정한 후에도 라이브러리는 찾지 못합니다. 혹시 그전 글에서 CMake를 사용하시는 분은 Tool Chain File을 등록해서 써야 한다는 메시지가 떴고 이걸 나중에 처리하겠다고 한 거 기억하시나요? 여기서 이것을 등록해줘야 합니다. 이것을 등록해 줘야 vcpkg를 통해 설치된 라이브러리도 CMake에서 라이브러리 탐색에 사용됩니다. Ctrl + , 를 눌러 설정으로 진입후 'cmake: configure settings' 설정을 찾고, setting.json에서 편집을 눌러서 직접 편집합니다. 사실 편집을 따로 제공하지만 이를 사용해보면 Tool Chain File에 대한 설정메뉴가 따로 나오지 않아서 이렇게 추가하였습니다.

 

setting.json 파일에 다음과 같이 cmake_tool_chain_file에 관한 설정을 추가하고 vcpkg 설정시 나왔던 파일경로로 값을 지정합니다. 그후 해당 파일을 저장합니다.

이제 다시 빌드 하면 다음과 같이 성공합니다.

빌드된 실행 파일을 실행해 보면 다음과 같이 잘 실행 되는 걸 볼 수 있습니다.


이전글

2022.10.27 - [VS Code] - Ubuntu 에서 VS Code와 vcpkg 그리고 cmake 사용 (1/2)

 

함께 볼만한 글

2023.01.17 - [VS Code] - Ubuntu에서 VSCode+CMake+vcpkg를 이용한 Arm 크로스컴파일