
[DevTools/CMake] 생성기 표현식 (Generator Expression)
Generator Expression은 $<...> 형식으로 작성되며, 빌드 시스템 생성(Generate) 단계에서 조건에 따라 값이 평가되는 표현식이다. 빌드 타입(Debug/Release), 플랫폼, 컴파일러 등에 따라 옵션이나 링크 설정을 유연하게 제어할 수 있다.

Generator Expression은 $<...> 형식으로 작성되며, 빌드 시스템 생성(Generate) 단계에서 조건에 따라 값이 평가되는 표현식이다. 빌드 타입(Debug/Release), 플랫폼, 컴파일러 등에 따라 옵션이나 링크 설정을 유연하게 제어할 수 있다.

add_custom_command()는 빌드 과정 중 특정 파일을 생성하거나 외부 명령을 실행하기 위한 규칙을 정의한다. add_custom_target()은 실제 출력 파일과 무관하게, 사용자 정의 빌드 단계를 하나의 타겟으로 만드는 데 사용된다.

Imported Target은 외부 라이브러리를 CMake 타겟처럼 사용할 수 있게 만든 객체다. find_package()로 생성되며, include 경로와 링크 정보를 함께 포함한다.

xxx-config.cmake는 find_package()가 Config Mode로 패키지를 찾을 때 사용하는 설정 파일이다. 라이브러리가 자신의 include 경로와 링크 정보를 직접 제공한다.

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 형태로 제공한다.