개발환경/CMake
CMake를 이용한 C 언어 프로그래밍: 디렉토리 복사하기
오늘도 야근
2022. 4. 13. 23:00
개요
본 글에서는 CMake를 이용하여 빌드할 때, 특정 디렉토리를 다른 곳으로 복사하는 방법을 소개한다.
본 글에서 사용된 환경은 다음과 같다.
- CMake 실행 및 빌드 환경 : 우분투 리눅스 18.04
- CMake 버전 : 3.13.2
CMakeLists.txt에 디렉토리 복사 명령문 작성하기
CMakeLists.txt 파일에 add_custom_command() 명령문을 작성하여, 타겟 빌드 시에 특정 디렉토리를 복사할 수 있다.
add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${FROM_DIR} ${TO_DIR})
위 명령문에서 작성자의 의도에 따라 변경될 수 있는 부분은 각각 다음과 같다.
- ${TARGET} : 빌드 타겟 (예: add_executable()에 지정된 타겟)
- ${FROM_DIR} : 복사할 디렉토리 경로
- ${TO_DIR} : 디렉토리가 새롭게 복사될 경로
위 명령문은 POST_BUILD 옵션을 사용하였기 때문에 빌드가 완료된 후 실행된다. 따라서 빌드가 실패하면 실행되지 않는다.
예시
hello.c 파일을 빌드한후 /workspace/dir이라는 디렉토리를 /work/dir로 복사하는 전체 CMakeLists.txt 파일의 예시는 다음과 같다.
set(TARGET_APP hello)
add_executable(${TARGET_APP} hello.c)
add_custom_command(TARGET ${TARGET_APP} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory /workspace/dir work/dir)