Study: DeveloperTools(DevTool)/DevTool: CMake

    [CMake] function: 반복되는 작업은 함수화하자!

    본 문서는 'cmake function'에 대해 다룹니다. 이는 CMakeLists.txt파일을 작성하는 과정에서 반복되는 과정을 함수로 정형화하는 과정이니 반복되는 cmake문을 작성하고 계셨던 분들은 참고 바랍니다. function function에 대한 기본적인 구조는 다음과 같다. function( [ ...]) endfunction() 기본적으로 function에 있는 argment를 불러오기 위해서는 변수명을 호출하는 것과 유사하게 진행한다. function(fooKeyword country city) message("Address: ${country} ${city}") endfunction() fooKeyword("germany" "munich") 추가적으로 인자에 대한 정보를 뽑기 위해서는..

    [CMake] 크로스 플랫폼 빌드 환경 구축

    크로스 플랫폼(Cross Platform) 빌드 플랫폼 대응 플랫폼이 다르면 System API, 혹은 같은 API더라도 구현 형태나 지원 범위가 상이할 수 있습니다. 조건부 분기문을 사용해 플랫폼에 맞게 미리 작성된 라이브러리를 선택하도록 하면 상대적으로 부담이 줄어들 것입니다. 크로스 컴파일을 위한 라이브러리라면 변수를 검사하는 순서, 조건문에 주의를 기울여야 합니다. CMake는 플랫폼 관련 변수들을 제공하고 있으며, Android 혹은 iOS로 크로스 컴파일을 하기 위해 CMake Toolchain을 사용한 경우 그 값을 참고해 처리를 다르게 할 수 있습니다. 단, 이는 가장 윗 줄에 주석으로 적은 것처럼 현재 시스템을 변수로 알려주는 것이라는 점에 주의하시기 바랍니다. 예제) 크로스 플랫폼(Cr..

    [CMake] FetchContent: 외부 라이브러리를 사용하자~

    💡 본 문서는 CMake로 환경을 build하는 중 외부의 필요한 라이브러리를 가져오는 FetchContent과정에 대해 자세히 설명합니다. 1. FetchContent FetchContent: 'configure time'에 외부 라이브러리를 가져옵니다(populating). configure time: CMake를 실행하는 시점 ExternalProject_Add(): 외부 라이브러리를 'build time'에 가져옵니다. build time: makefile을 활용하여 make 하는 시점. the FetchContent module makes content available immediately, allowing the configure step to use the content in command..