파다 평범일상

CMake에서 "add_custom_command()" 명령어 본문

컴퓨터 IT/얕은 컴퓨터 지식과 프로그래밍

CMake에서 "add_custom_command()" 명령어

파다 평범일상 2024. 5. 2. 09:04
반응형

CMake에서 add_custom_command() 명령어

CMake에서 add_custom_command() 명령어는 임의의 명령어를 실행하도록 지시하는데 사용된다.

이를 통해 빌드 프로세스에서 특정 작업을 추가하거나 CMake에서 직접 지원하지 않는 기능을 구현 할 수 있다.

add_custom_command() 명령어의 사용 형태

add_custom_command() 명령어는 두 가지 주요 형태로 사용할 수 있다.

두 가지 주요 형태이외에 추가적으로 사용할 수 있는 옵션들도 존재한다. 여러개를 제공하지만 내가 사용하는 환경에서 사용하는 것들만 설명을 적어놓았다.

 

  • COMMAND는 어떠한 명령을 수행할지에 대한 내용을 정의한다.
  • WORKING_DIRECTORY는 주어진 현재 작업 디렉터리로 명령을 실행한다. 여기에 작성된 경로에서 작업을 수행하겠다는 것으로 이해했다.

명령어가 제공하는 주요 형태 첫번째는 "OUTPUT"

첫 번째 형태는 출력을 생성하기 위해 사용자 정의 명령을 추가하기 위한 것이다.

이는 지정된 파일을 생성하는 명령을 정의한다.

 

예를 들어, LuaJIT은 빌드할때 다음과 같이 이 명령어를 사용하고 있다.

  add_custom_command(OUTPUT ${MINILUA_PATH}
    COMMAND ${CMAKE_COMMAND} ${TOOLCHAIN} ${TARGET_SYS} -DLUAJIT_DIR=${LUAJIT_DIR}
            -DCMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}
            ${CMAKE_CURRENT_LIST_DIR}/host/minilua
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/minilua
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/minilua)

 

OUTPUT을 사용하여 ${MINILUA_PATH} 라는 곳에 어떠한 파일을 생성할 것 같으며,

첫 번째 COMMAND 에서는 CMAKE를 사용하여 크로스컴파일 관련하여 어떠한 일을 하고 있는것 같다.

두 번째 COMMAND 에서는 CMAKE를 사용하여 ${CMAKE_CURRENT_BINARY_DIR}/minilua 에서 빌드를 하는 것 같다.

그리고 이 모든 것은 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/minilua에서 하도록 정의하고 있다.

명령어가 제공하는 주요 형태 두번째는 "TARGET"

두 번째 형태는 특정 타겟에 대한 명령어를 추가하는데 사용된다.

이는 타겟을 빌드하기 전이나 후에 작업을 수행하는데 유용하다. 명령은 대상의 일부가 되며 대상 자체가 빌드될 때만 실행된다. 대상이 이미 빌드되었을 경우 명령이 실행되지 않는다.

Comments