Files
abseil-cpp/CMake/README.md
Abseil Team b832dce848 Creation of LTS branch "lts_2020_02_25"
- 0033c9ea91 Fix build on FreeBSD/powerpc (#616) by kgotlinux <60880393+kgotlinux@users.noreply.github.com>
  - 0d5ce2797e Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - b69c7d880c Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 2a5633fc07 Merge "Export of internal Abseil changes" by Xiaoyi Zhang <zhangxy@google.com>
  - f9b3d6e493 Add RISCV support to GetProgramCounter() (#621) by Khem Raj <raj.khem@gmail.com>
  - 0232c87f21 Add missing ABSL_HAVE_VDSO_SUPPORT conditional (#622) by Sinan Kaya <41809318+franksinankaya@users.noreply.github.com>
  - 3c81410510 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - c44657f556 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 98eb410c93 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - bf78e97730 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - d95d156716 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 24713a7036 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 72382c21fe Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 08a7e7bf97 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 36bcd9599b Fix pointer format specifier in documentation (#614) by Andre Nguyen <andre-nguyen@users.noreply.github.com>
  - 0f86336b69 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - c512f118dd Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 37dd2562ec Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 4442770261 fix: Add support for more ARM processors detection (#608) by Andre Nguyen <andre-nguyen@users.noreply.github.com>
  - 159bf2bf6d Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - a2e6adecc2 Use https links. (#586) by nlewycky <nicholas@mxc.ca>
  - 564001ae50 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - b3aaac8a37 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 63ee2f8877 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - a048203a88 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 1de0166368 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ad904b6cd3 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 2923513914 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - bf86cfe165 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 12bc53e031 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 1e39f8626a Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 77f87009a3 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - d659fe54b3 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - a4b757b5d4 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 0514227d25 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 7f4fe64af8 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 16d9fd58a5 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - bcaae6009c Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 8ba96a8244 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 2103fd9acd Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 3df7b52a6a Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - fa8c75182f Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 85092b4b64 Fix Conan builds (#400) by Adrian Ostrowski <adr.ostrowski@gmail.com>
  - e96ae2203b Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 20de2db748 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 846e5dbeda Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 8207907f4f Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 078b89b3c0 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 19b021cb3f Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ecc0033b54 Always enable proper symbolize implementation on Windows ... by Loo Rong Jie <loorongjie@gmail.com>
  - 2796d500ae Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - e4c8d0eb8e Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - a15364ce4d Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ab3552a189 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - e9f9000c7c Fix ABSL_WAITER_MODE detection for mingw (#342) by Joe Sylve <Joe.Sylve@gmail.com>
  - abea769b55 Fix ABSL_HAVE_ALARM check on mingw (#341) by Joe Sylve <Joe.Sylve@gmail.com>
  - 25597bdfc1 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - aad33fefaa Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 8fe7214fe2 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - debac94cfb Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 882b3501a3 Fix spelling errors (#384) by Sungmann Cho <55860394+chosungmann@users.noreply.github.com>
  - 502efe6d78 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ccdd1d57b6 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ddf8e52a29 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 6ec1362810 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - ac78ffc3bc Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 5374c56e51 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 97c1664b4b Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 325fd7b042 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 83c1d65c90 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - eb6b7bd23b Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 9ddac555b7 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 1948f6f967 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - a0d1e098c2 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 2d2d7fbc28 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 0302d1e5fa supppress unused variable warning for gcc (#372) by Martin <pizzard@users.noreply.github.com>
  - 262d74ba81 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - f0afae0d49 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 0e7afdcbd2 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 9a41ffdd3a Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 36910d3d7e [bazel] Add fixes for --incompatible_load_cc_rules_from_b... by Yannic <contact@yannic-bonenberger.com>
  - aae8143cf9 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - d9aa92d7fb Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 321ab53030 Export of internal Abseil changes by Abseil Team <absl-team@google.com>
  - 4ef574064e Export of internal Abseil changes by Abseil Team <absl-team@google.com>

GitOrigin-RevId: 0033c9ea91
Change-Id: I8a2b70063cb3ab40c6943a6db0fe40cae71ed8d7
2020-02-25 17:56:58 -05:00

3.4 KiB

Abseil CMake Build Instructions

Abseil comes with a CMake build script (CMakeLists.txt) that can be used on a wide range of platforms ("C" stands for cross-platform.). If you don't have CMake installed already, you can download it for free from https://www.cmake.org/.

CMake works by generating native makefiles or build projects that can be used in the compiler environment of your choice.

For API/ABI compatibility reasons, we strongly recommend building Abseil in a subdirectory of your project or as an embedded dependency.

Incorporating Abseil Into a CMake Project

The recommendations below are similar to those for using CMake within the googletest framework (https://github.com/google/googletest/blob/master/googletest/README.md#incorporating-into-an-existing-cmake-project)

Step-by-Step Instructions

  1. If you want to build the Abseil tests, integrate the Abseil dependency Google Test into your CMake project. To disable Abseil tests, you have to pass -DBUILD_TESTING=OFF when configuring your project with CMake.

  2. Download Abseil and copy it into a subdirectory in your CMake project or add Abseil as a git submodule in your CMake project.

  3. You can then use the CMake command add_subdirectory() to include Abseil directly in your CMake project.

  4. Add the absl:: target you wish to use to the target_link_libraries() section of your executable or of your library.
    Here is a short CMakeLists.txt example of a project file using Abseil.

cmake_minimum_required(VERSION 3.5)
project(my_project)

# Pick the C++ standard to compile with.
# Abseil currently supports C++11, C++14, and C++17.
set(CMAKE_CXX_STANDARD 11)

add_subdirectory(abseil-cpp)

add_executable(my_exe source.cpp)
target_link_libraries(my_exe absl::base absl::synchronization absl::strings)

Running Abseil Tests with CMake

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:

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.

Available Abseil CMake Public Targets

Here's a non-exhaustive list of Abseil CMake public targets:

absl::algorithm
absl::base
absl::debugging
absl::flat_hash_map
absl::flags
absl::memory
absl::meta
absl::numeric
absl::random
absl::strings
absl::synchronization
absl::time
absl::utility