리스트 변수 정의 및 초기화
CMake에서 리스트 변수는 여러 개의 값을 저장할 수 있는 데이터 구조로, 공백으로 구분된 값들을 저장한다. 리스트 변수를 정의할 때는 일반 변수와 동일한 set
명령어를 사용한다. 예를 들어:
set(MY_LIST "item1" "item2" "item3")
위의 예시에서 MY_LIST
라는 이름의 리스트 변수가 정의되었고, "item1", "item2", "item3"라는 세 개의 값이 저장되었다. CMake에서는 각 값들이 공백으로 구분되므로, "item1;item2;item3"와 같이 세미콜론으로 연결된 형태로 저장된다.
리스트 변수에 값 추가 및 수정
리스트 변수에 새로운 값을 추가하거나 기존 값을 수정하려면 list(APPEND)
명령어를 사용한다. 예를 들어, 기존 리스트에 새 값을 추가하려면 다음과 같이 작성할 수 있다:
list(APPEND MY_LIST "item4")
위 명령은 MY_LIST
에 "item4"를 추가한다. 이로 인해 리스트는 "item1", "item2", "item3", "item4"의 네 개 항목을 가지게 된다.
리스트 변수의 특정 인덱스 위치에 값을 삽입하거나 삭제하는 것도 가능한다. 예를 들어, 두 번째 위치에 새 항목을 삽입하려면:
list(INSERT MY_LIST 1 "new_item")
이 명령은 "item2" 앞에 "new_item"을 삽입한다. 반면, 특정 항목을 삭제하려면 REMOVE
또는 REMOVE_AT
명령어를 사용한다:
list(REMOVE MY_LIST "item3")
list(REMOVE_AT MY_LIST 2)
첫 번째 명령은 "item3"을 리스트에서 제거하고, 두 번째 명령은 세 번째 항목을 제거한다(인덱스는 0부터 시작).
리스트 변수의 요소 접근
리스트 변수의 특정 요소에 접근하려면 list(GET)
명령어를 사용한다. 예를 들어:
list(GET MY_LIST 0 FIRST_ITEM)
이 명령은 MY_LIST
의 첫 번째 요소를 FIRST_ITEM
변수에 저장한다. 다수의 인덱스를 한 번에 지정해 여러 요소를 가져올 수도 있다:
list(GET MY_LIST 0 2 SELECTED_ITEMS)
이 명령은 첫 번째와 세 번째 요소를 SELECTED_ITEMS
변수에 저장한다.
리스트 변수의 크기 및 조건부 사용
리스트 변수의 크기(즉, 요소의 개수)를 알아내려면 list(LENGTH)
명령어를 사용한다:
list(LENGTH MY_LIST LIST_SIZE)
이 명령은 MY_LIST
의 요소 개수를 LIST_SIZE
변수에 저장한다. 이 값을 조건문과 결합하여 리스트의 크기에 따라 다른 동작을 수행할 수 있다:
if(LIST_SIZE GREATER 2)
message("List has more than two items.")
endif()
리스트 변수를 문자열로 변환
리스트 변수를 문자열로 변환할 때는 string(JOIN)
명령어를 사용한다. 예를 들어:
string(JOIN "," JOINED_LIST ${MY_LIST})
이 명령은 MY_LIST
의 모든 요소를 쉼표로 구분하여 JOINED_LIST
변수에 저장한다. 결과는 "item1,item2,item3,item4"와 같은 형태가 된다.
고급 리스트 연산
CMake에서는 리스트를 정렬하거나 중복 항목을 제거할 수도 있다. 예를 들어, 리스트를 정렬하려면 list(SORT)
명령어를 사용한다:
list(SORT MY_LIST)
이 명령은 MY_LIST
를 알파벳 순으로 정렬한다. 중복 항목을 제거하려면 list(REMOVE_DUPLICATES)
명령어를 사용한다:
list(REMOVE_DUPLICATES MY_LIST)
이 명령은 리스트 내의 중복된 항목을 모두 제거한다.
관련 자료: - CMake 공식 문서 - list 명령어 - CMake 공식 문서 - set 명령어