C , C++, C#

[Visual Studio 2022] VS 2022 크로스 플랫폼 빌드: CMakepprest.json

vhxpffltm 2022. 11. 7. 19:00
반응형

먼저, MS의 설명을 보면 아래와 같다.

 

https://youtu.be/yImev317_Ns

 

드디어 CLion이 아닌 VS에서 크로스 플랫폼으로 윈도우와 리눅스에서빌드하고 디버깅할수 있기를 기도할수 있게 되었다.

또한, VS Generator가 아닌 Ninija등으로도 다양하게 디버깅 모드와 릴리즈 모드를 기대할수 있다.

 

이제 한번 적용한 것들을 정리해보고자 한다.

 

1. 동영상처럼 VS의 옵션에서 여러가지 세팅할수 있다. 

VS 2022에서는 CMakepreset.json의 유무를 가지고 크로스플랫폼을 빌드할수 있다.

따라서 해당 파일이 필수적이라고 보면 된다. CMakeSettings.json은 잘 모르니 넘어간다.

 

 

하지만, 여러 시작도 전에 몇개 이상한것들이 있다. 하나씩 확인해보면 아래와 같다.

간단하게 기존에 적용되있던 CMakepreset을 그대로 VS Generator로 돌렸는데 아래의 에러가 있다.

- TRACKER : error TRK0005: Failed to locate: "CL.exe". The system cannot find the file specified

https://stackoverflow.com/questions/47256033/tracker-error-trk0005-failed-to-locate-cl-exe-the-system-cannot-find-the

 

음... 아무리 봐도 CL 컴파일러를 못찾나보다.. VS 2022에서 VS 2017 CL 컴파일러를 쓰는건데.. 왜 못팢을까..?

위의 링크처럼 CLI 로는 구성 요소는 VS의 기본 요소가 아니었다. 

즉, CLI를 실행할수 있는 요소가 없어서 해당 컴파일러를 못찾는 문제다. 

여기서 실수할수 있는것이 VS 2022의 구성 요소로 설치해야한다. 아래 그림과 같이 CLI 요소를 설치해준다.

 

 

필자는 VS2017, VS2019, VS2022 까지 새로 CLI를 설치했고 이렇게 하면 CL 컴파일러를 못찾는문제는 없어진다.

 

두번째는, 구성 관리자다.  혹시 아래 그림과 같이 WSL2가 있는데도 WSL을 못찾는 상황이 있을수 있다.

 

그래서 WSL2를 켜야하나 하면서 모르고있던중에 아래에서 해답을 찾을수 있었다.

https://stackoverflow.com/questions/72542733/visual-studio-2022-not-list-wsl-as-an-option-in-target-system

이것도 구성요소가 없어서 발생한 문제이다..

아래와 같이 구성요소가 설치되어 있는지 확인한다.

 

 

이렇게하면 우리의 프로젝트가 크로스 플랫폼으로 빌드할 준비를 모두 마친것이다.

 

이제 CMakepreset.json이 필요하다. 이를 작성해야 하는데.. 간단한 방법은 아래를 확인하자.

https://learn.microsoft.com/ko-kr/cpp/build/cmake-presets-vs?view=msvc-170 

 

CMake 사전 설정으로 구성 및 빌드

CMake 사전 설정을 사용하여 CMake 프로젝트 구성 및 빌드에 대한 참조

learn.microsoft.com

 

Example 예제를 보자 스크립트를 보면 누구나 쉽게 이해할 수 있을것이다.

 

 

Json을 보면 느끼겠지만, 이렇게 디버그와 릴리즈로 나눌수 있다. 여기서는 debug만 나열하였다.

간단하게 모두 사용하는 옵션들을 debug에 기입한다.

install 경로를 지정하고 CMAKE define 값들을 설정할수 있다.

여기서는 CMAKE_TEST_INSTALL과 CMAKE_TEST_PATH를 지정하였다.

이제 ConfigurePresets로 각각의 플랫폼에 따라 작성한다.

가장 많이 사용하는 빌드 디렉토리 경로와 Generator를 설정하기만 하면 완료된다.

이 모양을 이해하면 작성하는데 크게 어렵지 않을 것이다.

 

간단한 프로그램인데 CMake의 구조를 보면 이해할수  있다.

이 프로그램을 Windows VS 2022 x64 컴파일러와 WSL Liinux Gcc 9.4로 빌드하여 크로스 플랫폼에서 쉽게 확인할 수 있을것이다.

반응형