GoogleTest
Submodule method (preferred)
To use this method, just checkout GoogleTest as a submodule:
Then, in your main CMakeLists.txt
:
I would recommend using something like PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME
to set the default for the option, since this should only build by default if this is the current project. As mentioned before, you have to do the enable_testing
in your main CMakeLists. Now, in your tests directory:
If you did this in your main CMakeLists, you could use a normal add_subdirectory
; the extra path here is needed to correct the build path because we are calling it from a subdirectory.
The next line is optional, but keeps your CACHE
cleaner:
If you are interested in keeping IDEs that support folders clean, I would also add these lines:
Then, to add a test, I'd recommend the following macro:
This will allow you to quickly and simply add tests. Feel free to adjust to suit your needs. If you haven't seen it before, ARGN
is "every argument after the listed ones".
Download method
You can use the downloader in my CMake helper repository, using CMake's include
command.
This is a downloader for GoogleTest, based on the excellent DownloadProject tool. Downloading a copy for each project is the recommended way to use GoogleTest (so much so, in fact, that they have disabled the automatic CMake install target), so this respects that design decision. This method downloads the project at configure time, so that IDE's correctly find the libraries. Using it is simple:
Note:
add_gtest
is just a macro that addsgtest
,gmock
, andgtest_main
, and then runsadd_test
to create a test with the same name:
FetchContent: CMake 3.11
The example for the FetchContent module is GoogleTest:
Last updated