[CMake] Google Test (구글테스트) 종속성 추가하기

C++ 프로젝트에 Google Test (구글 테스트)를 추가하는 법을 알아보자. 여기에는 여러 가지 방법이 있는데, 현재 가장 추천하는 방식은 CMake의 추가 모듈을 이용해서 빌드 시에 다운로드하는 것이다.

 

etc-image-0

구글 테스트 설정

CMakeLists.txt 파일 안에 테스트 타깃을 만들기 전에 다음과 같은 코드 블록을 넣는다.

include(FetchContent)
FetchContent_Declare(
  googletest
  GIT_REPOSITORY https://github.com/google/googletest
  GIT_TAG v1.14.0
)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

 

FetchContent는 CMake의 기본 내장 함수가 아니기 때문에 include(FetchContent)로 해당 모듈을 먼저 불러와야 한다. 이 모듈은 CMake 3.11 이상 버전부터 사용 가능하다.

 

첫 번째 인자는 아무것이나 사용할 수 있는데 보통 repository이름을 사용한다. 여기서는 googletest를 썼다. GIT_REPOSITORY에는 구글테스트의 GitHub URL을 써주면 되고, GIT_TAG에는 사용하고 싶은 버전을 써주면 된다. 현재는 v1.14.0가 최신이고 사용가능한 버전은 https://github.com/google/googletest/tags에서 확인할 수 있다.

 

set(...) 에는 구글 테스트를 빌드할 때 옵션을 지정하기 위해 쓰는데, 여기서는 설치를 위한 옵션을 끄기 위해 INSTALL_GTEST를 OFF로 설정했다. 다른 옵션들은 https://github.com/google/googletest/blob/main/CMakeLists.txt#L19-L21에서 확인할 수 있다.

 

그리고 최종적으로 FetchContent_MakeAvailable(googletest)를 불러 사용할 수 있게 만들어준다.

 

더 자세한 내용은 다음을 참고: https://cmake.org/cmake/help/latest/module/FetchContent.html

테스트 타깃 만들기

다음과 같은 코드 블록을 넣는다.

add_executable(my_test test.cpp)
add_test(NAME my_test COMMAND $<TARGET_FILE:my_test>)
target_link_libraries(my_test PRIVATE GTest::gtest GTest::gtest_main)

 

my_test는 테스트 이름이고 test.cpp는 실제 구글 테스트 코드가 있는 C++ 소스코드이다. my_test 타깃에 GTest::gtest GTest::gtest_main 이 두 타깃을 종속성으로 설정하여 구글 테스트 라이브러리를 사용할 수 있게 해 준다.

 

다음은 간단한 테스트 코드이다 (test.cpp).

#include <gtest/gtest.h>

TEST(MyTest, Simple)
{
  int a = 10;
  int b = 20;
  EXPECT_TRUE(a == 10);
  EXPECT_FALSE(a == b);
}

 

구글 테스트 라이브러리에 대한 더 자세한 설명은 다음을 참고: https://google.github.io/googletest/

반응형