클러스터에 와이파이 문제로 집에 돌아가서 데탑으로 shaderPixel 과제를 진행해보려 했다.
m1 macbook air에서는 렌더링 시 렉이 좀 발생해서 렉없이 렌더링되는 것이 궁금하기도 했고, 사실 그래픽 작업하기엔 데탑이 더 적합해서 언젠가 해놔야할 부분이긴 했다.
가장 중요한 것은 CMAKE가 운영체제에 관계없이 잘 빌드해주도록 세팅하는 것이었다.
오늘은 윈도우 환경에서 CMake 세팅을 진행해보며 부딫힌 문제들과 이를 해결하기 위해 어떻게 Cmake를 구성해야했는지를 정리해보도록 하겠다.
MAC : m1 macbook air, visual studio code
WIN : WINDOWS11, visual studio 2022
가장 먼저 빌드 시 만난 문제는 utf8 문제였다.
utf-8은 각각의 유니코드에 맞게 세팅된 32비트 공간에 대한 규약 이다.
내가 32비트를 어떻게 구성하냐에 따라 어떤 문자를 의미하게 할 것인지 지정해둔 문자 인코딩 방식이다.
기본적으로 MacOS에서는 UTF-8 이 맥의 기본 환경과 빌드 도구 세팅이었다. 따라서 별도의 옵션이나 세팅 없이 작업이 진행되었던 것.
하지만 이를 그대로 윈도우에서 사용하고자 한다면 문제가 된다.
윈도우에서는 기본 인코딩 방식이 지역 설정에 따라 다르다고 한다.
이에, CMake가 문자를 읽을 방식을 utf-8이라고 알려주는 과정이 필요했고, 기본 인코딩을 명시적으로 설정해야했다.
add_compile_options(/utf-8)
add_compile_options 를 통해 컴파일될 때의 문자 인코딩 방식을 위와 같이 세팅하여 문제를 해결했다.
처음에 이 문제를 맞닥뜨렸을 때, 윈도우 환경에 spdlog가 깔리지 않았다고 생각하여, vcpkg를 먼저 설치한 뒤, spdlog를 설치하여 설치된 spdlog를 cmake가 찾아 사용하게 하려했다.
하지만 이렇게 하더라도 여전히 spdlog를 찾지 못하는 문제가 발생했다.
설치되었는데 이를 찾지 못하는 문제는 링킹 과정에서 발생한 문제였다.
그리고 그 차이는 디버그/릴리즈 모드에 따라 다른 라이브러리를 사용하는 vs의 특성에 있었다.
# dependency 리스트 및 라이브러리 파일 리스트 추가
set(DEP_LIST ${DEP_LIST} dep_spdlog)
set(DEP_LIBS ${DEP_LIBS} spdlog)
# Dependency 리스트 및 라이브러리 파일 리스트 추가
set(DEP_LIST ${DEP_LIST} dep-spdlog)
set(DEP_LIBS ${DEP_LIBS} spdlog$<$<CONFIG:Debug>:d>)
보다시피, DEP_LIBS에 세팅해주는 spdlog의 형식이 다르다.
위는 그냥 spdlog를 언제나 세팅해주지만, 아래는 CONFIG:Debug 일 때 spdlogd 를 세팅한다.
디버그모드로 빌드를 진행하고 있었던 시스템은 spdlog를 찾지못하고 못찾았다는 에러를 내고 있었던 것이었다.
macOS : / 로 디렉토리 구분
win : \\ 로 디렉토리 구분
결국 성공적으로 윈도우에서도 동작을 확인했다.
빌드환경 세팅이 제일 어려운 것 같다.