
[DevTools/CMake] SHARED 란?
CMake에서 SHARED는 동적 라이브러리를 생성하기 위한 옵션이다. add_library(my_lib SHARED ...) 형태로 사용하며, 플랫폼에 따라 .dll, .so, .dylib 파일을 만든다.

CMake에서 SHARED는 동적 라이브러리를 생성하기 위한 옵션이다. add_library(my_lib SHARED ...) 형태로 사용하며, 플랫폼에 따라 .dll, .so, .dylib 파일을 만든다.

CMake의 반복 블록은 foreach()와 while()을 사용해 여러 값이나 조건에 따라 명령을 반복 실행하는 구조다. 파일 목록 처리, 옵션 일괄 적용, 타겟 설정 자동화 등에 활용된다.

CMake의 Cache는 설정(Configure) 단계에서 결정된 변수 값을 저장해 두는 공간이다. 한 번 탐색된 컴파일러 정보, 경로, 옵션 등을 CMakeCache.txt에 보관하여 이후 재구성 시 다시 계산하지 않도록 돕는다.

CMAKE_MODULE_PATH는 사용자 정의 FindXXX.cmake 모듈을 찾기 위한 경로다. CMAKE_PREFIX_PATH는 find_package()가 외부 라이브러리(Config 패키지)를 찾을 때 참고하는 상위 경로다.

install()은 CMake에서 빌드 결과물을 지정한 위치로 배포하기 위한 명령이다. 실행 파일, 라이브러리, 헤더 파일 등을 목적지 디렉토리에 복사하며, 패키징이나 외부 프로젝트에서 재사용할 수 있는 구조를 만든다.

CMake의 Find Module은 find_package() 호출 시 외부 라이브러리의 경로와 설정을 탐색하기 위한 스크립트다. FindXXX.cmake 형식으로 작성되며, 라이브러리 위치, 헤더 경로, 링크 대상 등을 찾아 변수 또는 Imported Target 형태로 제공한다.

CMake 프로젝트에서 .cmake 모듈을 구성하는 방법과 include vs add_subdirectory의 유효범위 차이를 살펴보고, CMAKE_MODULE_PATH로 모듈 경로를 관리하는 법 및 install 명령과 CMAKE_INSTALL_PREFIX를 이용한 빌드 산출물 배포 전략을 다룬다.

크로스 플랫폼은 정말 힘들 일이다. CMake에서 이 문제에 대응해보자.

라이브러리에서 또 다른 라이브러리를 불러와 사용하는 것은 비일비재한 일이다. 그러면 `CMakeLists.txt` 파일은 어떻게 정의해야 하는지 알아보자.

Modern CMake 관점에서 권장되는 C++ 버전 관리 방법과 플랫폼별 컴파일러 차이 대응 전략을 간단히 다룬다.