Here is a short CMakeLists.txt example of a project file using Abseil.
cmake_minimum_required(VERSION 2.8.12) project(my_project) set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}") if(MSVC) # /wd4005 macro-redefinition # /wd4068 unknown pragma # /wd4244 conversion from 'type1' to 'type2' # /wd4267 conversion from 'size_t' to 'type2' # /wd4800 force value to bool 'true' or 'false' (performance warning) add_compile_options(/wd4005 /wd4068 /wd4244 /wd4267 /wd4800) add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS) endif() add_subdirectory(abseil-cpp) add_executable(my_exe source.cpp) target_link_libraries(my_exe absl::base absl::synchronization absl::strings)
Use the -DABSL_RUN_TESTS=ON
flag to run Abseil tests. Note that if the -DBUILD_TESTING=OFF
flag is passed then Abseil tests will not be run.
You will need to provide Abseil with a Googletest dependency. There are two options for how to do this:
-DABSL_USE_GOOGLETEST_HEAD
. This will automatically download the latest Googletest source into the build directory at configure time. Googletest will then be compiled directly alongside Abseil's tests.For example, to run just the Abseil tests, you could use this script:
cd path/to/abseil-cpp mkdir build cd build cmake -DABSL_USE_GOOGLETEST_HEAD=ON -DABSL_RUN_TESTS=ON .. make -j ctest
Currently, we only run our tests with CMake in a Linux environment, but we are working on the rest of our supported platforms. See https://github.com/abseil/abseil-cpp/projects/1 and https://github.com/abseil/abseil-cpp/issues/109 for more information.
Here's a non-exhaustive list of Abseil CMake public targets:
absl::base absl::algorithm absl::debugging absl::flat_hash_map absl::memory absl::meta absl::numeric absl::strings absl::synchronization absl::time absl::utility