Study: DeveloperTools(DevTool)/DevTool: CMake

[CMake] function: 반복되는 작업은 함수화하자!

DrawingProcess 2022. 6. 28. 10:51
반응형
본 문서는 'cmake function'에 대해 다룹니다.
이는 CMakeLists.txt파일을 작성하는 과정에서 반복되는 과정을 함수로 정형화하는 과정이니 반복되는 cmake문을 작성하고 계셨던 분들은 참고 바랍니다.

function


function에 대한 기본적인 구조는 다음과 같다.

function(<someName> [<arg1> ...])
  <commands>
endfunction()

기본적으로 function에 있는 argment를 불러오기 위해서는 변수명을 호출하는 것과 유사하게 진행한다.

function(fooKeyword country city)
    message("Address: ${country} ${city}")
endfunction()

fooKeyword("germany" "munich")

추가적으로 인자에 대한 정보를 뽑기 위해서는 다음과 같은 방법으로 진행한다.

function(foo name1 name2)
    message("Argument count: ${ARGC}")
    message("all arguments: ${ARGV}")
    message("all arguments: ${ARG0} ${ARG1} ${ARG2} ${ARG3}")
    message("optional arguments: ${ARGN}")
endfunction()

foo("asit" "dhal" "India" "Bhubaneswar")
Argument count: 4
all arguments: asit;dhal;India;Bhubaneswar
optional arguments: India;Bhubaneswar

cmake function에는 기본적으로 정의한 인자 외에 optional한 필드도 받는다.
인자를 여러 개 받을 수 있으며, ${ASGN}을 통해서 확인할 수 있다.

 

ARGN 에 대한 접근


optional 한 인자에 대해 접근하기 위해서는 ${ASGN}을 이용해야 한다.

function(foo firstName lastName)
    message("first name: ${firstName}")
    message("last name: ${lastName}")

    foreach(arg IN LISTS ARGN)
        message("address parts: ${arg}")
    endforeach()

endfunction()

foo("asit" "dhal" "India" "Bhubaneswar")
first name: asit
last name: dhal
address parts: India
address parts: Bhubaneswar

 

참고

반응형