변수 (Variables)
CMake에서 변수는 빌드 시스템에서 필요한 다양한 값을 저장하고, 이 값을 다른 명령어들에 전달하기 위해 사용된다. 변수는 대개 대문자로 정의되며, 일반적인 형식은 다음과 같다:
set(VARIABLE_NAME value)
-
기본 변수 정의:
set
명령어를 사용하여 변수를 정의한다. 이 명령어는 두 개의 인수를 받는데, 첫 번째는 변수 이름, 두 번째는 변수의 값이다. 예를 들어,set(MY_VAR "Hello World")
는MY_VAR
라는 이름의 변수를 "Hello World"라는 문자열 값으로 설정한다. -
변수 참조:
변수의 값을 참조할 때는${}
구문을 사용한다. 예를 들어,${MY_VAR}
는MY_VAR
의 값을 참조한다. -
변수 스코프:
변수는 정의된 위치에 따라 스코프가 결정된다. 기본적으로, 변수는 정의된 디렉토리와 하위 디렉토리에서 유효한다.set
명령어의PARENT_SCOPE
옵션을 사용하면 부모 디렉토리의 스코프로 변수를 확장할 수 있다. -
캐시 변수:
CMake는 캐시 변수를 통해 값의 지속성을 유지할 수 있다. 캐시 변수는-D
옵션을 사용해 명령행에서 설정하거나,set
명령어에서CACHE
옵션을 사용해 정의할 수 있다. 예를 들어,set(MY_CACHE_VAR "default_value" CACHE STRING "Description")
는MY_CACHE_VAR
라는 캐시 변수를 설정한다. -
환경 변수:
ENV
키워드를 사용하여 환경 변수를 참조할 수 있다. 예를 들어,${ENV{HOME}}
는 사용자 홈 디렉토리의 경로를 반환한다. -
전역 변수와 로컬 변수:
CMake에서는 변수를 전역 또는 로컬로 정의할 수 있다.set
명령어만 사용할 경우, 변수는 디렉토리 범위 내에서 로컬로 설정된다. 전역 변수를 정의하려면set_property
또는set_global_property
명령어를 사용한다.
리스트 (Lists)
CMake에서는 리스트를 사용하여 여러 값을 하나의 변수에 저장할 수 있다. 리스트는 세미콜론(;
)으로 구분된 문자열이다. CMake에서 리스트를 다루는 방법은 다음과 같다:
-
리스트 정의:
set
명령어를 사용해 리스트를 정의할 수 있다. 예를 들어,set(MY_LIST "item1;item2;item3")
는MY_LIST
라는 리스트를 정의한다. 리스트 요소들은 세미콜론으로 구분된다. -
리스트 참조:
리스트의 모든 요소를 참조할 때는${MY_LIST}
로 참조하며, 특정 요소를 참조하려면list
명령어를 사용해야 한다. -
리스트 요소 추가:
list(APPEND)
명령어를 사용해 리스트에 요소를 추가할 수 있다. 예를 들어,list(APPEND MY_LIST "item4")
는MY_LIST
에 "item4"를 추가한다. -
리스트 요소 제거:
list(REMOVE_ITEM)
명령어를 사용해 특정 요소를 리스트에서 제거할 수 있다. 예를 들어,list(REMOVE_ITEM MY_LIST "item2")
는MY_LIST
에서 "item2"를 제거한다. -
리스트 길이:
list(LENGTH)
명령어는 리스트의 길이를 구할 수 있다. 예를 들어,list(LENGTH MY_LIST length_var)
는MY_LIST
의 길이를length_var
에 저장한다. -
리스트 정렬:
list(SORT)
명령어를 사용해 리스트를 정렬할 수 있다. 예를 들어,list(SORT MY_LIST)
는MY_LIST
를 오름차순으로 정렬한다. -
리스트 조작:
CMake에서는 리스트의 특정 위치에 요소를 삽입하거나, 리스트의 하위 리스트를 추출하는 등 다양한 조작을 할 수 있다.list(INSERT)
,list(SUBLIST)
명령어가 이에 해당한다.
관련 자료:
- CMake Documentation: set Command
- CMake Documentation: list Command
- CMake Documentation: Variable Scope