반응형
본 문서는 '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
참고
- [Official CMake] function: https://cmake.org/cmake/help/latest/command/function.html
- [medium] cmake-functions-and-macros: https://asitdhal.medium.com/cmake-functions-and-macros-22293041519f
반응형
'Study: DeveloperTools(DevTool) > DevTool: CMake' 카테고리의 다른 글
[CMake] 변수 및 이미 정의된 매크로 값들 (0) | 2022.07.07 |
---|---|
[CMake] configure_file(): CMake 변수값을 소스코드에서 사용! (0) | 2022.07.04 |
[CMake] 크로스 플랫폼 빌드 환경 구축 (0) | 2022.06.24 |
[CMake] FetchContent: 외부 라이브러리를 사용하자~ (0) | 2022.06.24 |
[CMake] Effective Modern CMake 정리 (0) | 2022.06.24 |