CTest

CTest는 CMake에서 제공하는 테스트 자동화 도구이다. 이는 소프트웨어의 기능을 자동으로 테스트하고, 결과를 요약하여 보여준다. CMake 프로젝트에서의 테스트 설정을 쉽게 할 수 있도록 돕는다.

CTest 설정

CTest는 CMakeLists.txt 파일에 enable_testing() 명령어를 추가함으로써 활성화된다. 이 명령어는 CMake에 테스트 시스템을 초기화하도록 지시하며, 이후에 추가되는 모든 테스트가 이 시스템에 의해 관리된다.

enable_testing()

테스트 추가

각각의 테스트는 add_test() 명령어를 통해 정의된다. 이 명령어는 테스트 이름과 함께 실행할 명령을 지정한다.

add_test(NAME MyTest COMMAND my_test_executable)

위의 예시에서 MyTest는 테스트의 이름이며, my_test_executable은 테스트를 수행할 실행 파일이다.

CTest 실행

테스트는 CTest를 통해 실행된다. 터미널에서 ctest 명령어를 사용하면 등록된 모든 테스트를 실행할 수 있다.

ctest

성공적으로 테스트가 수행되면, 결과가 터미널에 요약되어 나타난다.

고급 기능

CTest는 다양한 고급 기능을 제공한다. 예를 들어, 특정 테스트만 선택하여 실행하거나, 테스트의 병렬 실행, 테스트 타임아웃 설정 등이 가능한다.

ctest -R MyTest # 특정 테스트만 실행
ctest -j4 # 병렬로 4개의 테스트 실행

CPack

CPack은 CMake의 패키징 도구이다. 소프트웨어의 배포 패키지를 자동으로 생성할 수 있도록 돕는다. CPack을 사용하면 다양한 플랫폼에서 사용 가능한 설치 프로그램을 쉽게 만들 수 있다.

CPack 설정

CPack은 CMakeLists.txt 파일에서 include(CPack) 명령어를 통해 활성화된다. 이 명령어는 CMake 설정 파일에 CPack 기능을 포함시키며, 이후에 패키징 관련 설정을 추가할 수 있다.

include(CPack)

기본 패키징 설정

CPack을 사용하기 위해서는 몇 가지 기본적인 설정이 필요하다. 패키지의 이름, 버전, 설치 경로 등을 지정할 수 있다.

set(CPACK_PACKAGE_NAME "MyApp")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_INSTALL_PREFIX "/usr/local")

이 외에도 다양한 변수들을 통해 패키지 형식, 압축 방법, 설치 경로 등을 세부적으로 설정할 수 있다.

패키지 생성

패키지를 생성하기 위해서는 CMake 빌드 디렉토리에서 cpack 명령어를 실행하면 된다.

cpack

이 명령어는 설정된 정보에 따라 적절한 형식의 배포 패키지를 생성한다. 예를 들어, DEB, RPM, NSIS 등의 패키지 형식을 생성할 수 있다.

고급 기능

CPack은 다양한 고급 기능을 제공한다. 예를 들어, 설치 마법사의 커스터마이징, 다중 구성(build configuration) 지원, 다양한 플랫폼에 대한 지원 등을 제공한다.

set(CPACK_GENERATOR "NSIS;TGZ") # Windows NSIS 설치 프로그램 및 TGZ 아카이브 생성
set(CPACK_NSIS_INSTALLER_ICON "icon.ico") # 커스텀 설치 아이콘 설정

CPack을 사용하면 소프트웨어의 배포를 자동화하고, 다양한 배포 환경에 적합한 패키지를 생성할 수 있다.


관련 자료: