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

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

 

구글 테스트 설정

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/

반응형