Simplest example of using Google C++ Testing Framework with CMake

Agnel Kurian picture Agnel Kurian · May 5, 2011 · Viewed 11.6k times · Source

I have a very simple C++ library (one header file, one .cpp file). I want to write unit tests for this project using the Google C++ Testing Framework.

Here is the directory structure:

~/project1
 |
 |-- project1.cpp
 |-- project1.h
 |-- project1_unittests.cpp
 \-- CMakeLists.txt

I do not plan to write my own main() function. I want to link with gtest_main as mentioned in the primer. What should CMakeLists.txt contain?

Answer

Chin Huang picture Chin Huang · May 5, 2011

Enable CMake's built-in testing subsystem:

# For make-based builds, defines make target named test.
# For Visual Studio builds, defines Visual Studio project named RUN_TESTS.
enable_testing()

Compile an executable that will run your unit tests and link it with gtest and gtest_main:

add_executable(runUnitTests
    project1_unittests.cpp
)
target_link_libraries(runUnitTests gtest gtest_main)

Add a test which runs this executable:

add_test(
    NAME runUnitTests
    COMMAND runUnitTests
)