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을 사용하면 소프트웨어의 배포를 자동화하고, 다양한 배포 환경에 적합한 패키지를 생성할 수 있다.
관련 자료:
- CMake 공식 문서: https://cmake.org/documentation/
- CTest 공식 문서: https://cmake.org/cmake/help/latest/manual/ctest.1.html
- CPack 공식 문서: https://cmake.org/cmake/help/latest/module/CPack.html