vsc에서 c/c++빌드를하기위해 CMake Quick Start
를 선택해 프로젝트를 만드는 과정에서 CPack
과 CTest
를 선택하는 과정이나온다.
2024.08.02 - [개발 관련 지식 및 Tool 사용방법/Visual studio code(VSC, VSCode)] - vsc에서 Cmake 개발환경 구축하기
[vsc에서 Cmake 개발환경 구축하기
이전에 반드시 컴파일러가 설치되어 있어야하고, 시스템 환경 변수에 컴파일러 경로가 추가되어 있어야 한다. 컴파일러 설치는 아래 포스팅 참고2024.09.16 - [개발 관련 지식 및 Tool 사용방법] - gcc
vuzwa.tistory.com](https://vuzwa.tistory.com/entry/vsc%EC%97%90%EC%84%9C-Cmake-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0)
이번 포스팅에서는 CTest
에 대해 알아보자.
CTest는 CMake와 함께 제공되는 테스트 도구로, 빌드된 프로그램의 테스트를 자동화하고 관리할 수 있게 해준다. 이를 통해 유닛 테스트, 통합 테스트 등을 쉽게 실행할 수 있다.
CTest 설정 단계
- 테스트 사용 설정: CMakeLists.txt 파일에
enable_testing()
명령어를 추가해 테스트를 활성화한다. - 테스트 추가:
add_test()
명령어를 사용해 테스트 실행 파일과 명령어를 등록한다. - CTest 명령어 실행: CMake로 프로젝트를 빌드한 후
ctest
명령어를 사용해 테스트를 수행한다.
예제: CMakeLists.txt 파일 설정
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 소스 파일 추가
add_executable(MyExecutable main.cpp)
# CTest 사용 설정
enable_testing()
# 테스트 추가 (예: MyExecutable을 테스트로 사용)
add_test(NAME MyTest COMMAND MyExecutable)
enable_testing()
과 add_test()
명령어를 통해 CTest가 테스트를 인식하고 실행할 수 있도록 설정한다.
CTest 실행 절차
- 빌드 디렉토리 생성 및 이동:
mkdir build cd build
- CMake 실행:
cmake ..
- 빌드 실행:
cmake --build .
- CTest 실행:
ctest
이 명령어들을 실행하면, CTest가 설정된 테스트를 실행하며 add_test()
로 등록된 모든 테스트가 수행된다.
고급 설정
CTest는 다양한 고급 기능을 제공하며, 이를 통해 테스트를 그룹으로 나누거나 병렬로 실행할 수 있다.
테스트 그룹 설정
# 여러 개의 테스트 추가
add_test(NAME Test1 COMMAND MyExecutable arg1)
add_test(NAME Test2 COMMAND MyExecutable arg2)
# 테스트 그룹 설정
set_tests_properties(Test1 PROPERTIES LABELS "group1")
set_tests_properties(Test2 PROPERTIES LABELS "group2")
병렬 테스트 실행
테스트를 병렬로 실행하려면 -j
옵션을 사용한다.
ctest -j4
이 명령어는 4개의 병렬 작업으로 테스트를 수행한다.
테스트 타임아웃 설정
각 테스트에 타임아웃을 설정할 수 있다.
set_tests_properties(Test1 PROPERTIES TIMEOUT 10)
이 설정은 Test1
이 10초 이상 실행되지 않도록 한다.
CTest와 CDash 연동
CTest는 CDash라는 웹 기반 대시보드와 연동해 테스트 결과를 시각화하고 관리할 수 있다. 이를 위해 CTest 설정을 CMakeLists.txt에 추가해야 한다.
# CDash 설정
set(CTEST_PROJECT_NAME "MyProject")
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
# CTestConfig.cmake 파일 생성
file(WRITE "${CMAKE_BINARY_DIR}/CTestConfig.cmake"
"set(CTEST_PROJECT_NAME \"MyProject\")\n"
"set(CTEST_NIGHTLY_START_TIME \"01:00:00 UTC\")\n"
"set(CTEST_DROP_METHOD \"http\")\n"
"set(CTEST_DROP_SITE \"cdash.example.com\")\n"
"set(CTEST_DROP_LOCATION \"/submit.php?project=MyProject\")\n"
"set(CTEST_DROP_SITE_CDASH TRUE)\n"
)
# CPack 설정
include(CTest)
이 설정은 CTest가 테스트 결과를 CDash 서버에 업로드할 수 있도록 구성한다.
예제 프로젝트
간단한 C++ 프로젝트 예제는 다음과 같다.
main.cpp
#include <iostream>
int main(int argc, char** argv) {
if (argc > 1 && std::string(argv[1]) == "arg1") {
std::cout << "Test1 passed\n";
return 0;
}
std::cout << "Test2 passed\n";
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 소스 파일 추가
add_executable(MyExecutable main.cpp)
# CTest 사용 설정
enable_testing()
# 테스트 추가
add_test(NAME Test1 COMMAND MyExecutable arg1)
add_test(NAME Test2 COMMAND MyExecutable)
이 예제는 main.cpp
를 빌드하고 두 개의 테스트를 추가한다. ctest
명령어를 사용해 테스트를 실행할 수 있다.
'개발 관련 지식 및 Tool 사용방법 > Visual studio code(VSC, VSCode)' 카테고리의 다른 글
VSC에서 TODO Highlight와 Snippets를 활용한 주석 정리 방법, 코드 문서화 방법, (0) | 2024.11.20 |
---|---|
vsc에서 Cmake 개발환경 구축하기 (0) | 2024.08.02 |
VSCode 사용 팁 - visual studio code 초 간단 실행하기, VSCode 워크스페이스 생성 간단하게 하는 방법 (1) | 2024.01.27 |