리스트 변수 정의 및 초기화

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 명령어