From 310635492d19a196bde64624e5a93e4828827d76 Mon Sep 17 00:00:00 2001 From: Christoph Erhardt Date: Fri, 13 Dec 2024 00:01:16 +0100 Subject: [PATCH] Add CMake interface library `GTest::gtest_prod` Production code that contains `#include ` should link against this interface library: it sets the correct include path for the compiler but does not instruct the linker to pull in any GoogleTest library code. --- googletest/CMakeLists.txt | 9 ++++++++- googletest/cmake/gtest_prod.pc.in | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 googletest/cmake/gtest_prod.pc.in diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt index 2e5388945..0290a119c 100644 --- a/googletest/CMakeLists.txt +++ b/googletest/CMakeLists.txt @@ -116,10 +116,14 @@ include_directories(${gtest_build_include_dirs}) # # Defines the gtest & gtest_main libraries. User tests should link # with one of them. +# Production code that includes should link with the +# interface library gtest_prod. # Google Test libraries. We build them using more strict warnings than what # are used for other targets, to ensure that gtest can be compiled by a user # aggressive about warnings. +add_library_and_alias(gtest_prod INTERFACE) +set_target_properties(gtest_prod PROPERTIES VERSION ${GOOGLETEST_VERSION}) cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) set_target_properties(gtest PROPERTIES VERSION ${GOOGLETEST_VERSION}) if(GTEST_HAS_ABSL) @@ -138,6 +142,9 @@ endif() cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) set_target_properties(gtest_main PROPERTIES VERSION ${GOOGLETEST_VERSION}) string(REPLACE ";" "$" dirs "${gtest_build_include_dirs}") +target_include_directories(gtest_prod SYSTEM INTERFACE + "$" + "$/${CMAKE_INSTALL_INCLUDEDIR}>") target_include_directories(gtest SYSTEM INTERFACE "$" "$/${CMAKE_INSTALL_INCLUDEDIR}>") @@ -152,7 +159,7 @@ target_link_libraries(gtest_main PUBLIC gtest) ######################################################################## # # Install rules. -install_project(gtest gtest_main) +install_project(gtest_prod gtest gtest_main) ######################################################################## # diff --git a/googletest/cmake/gtest_prod.pc.in b/googletest/cmake/gtest_prod.pc.in new file mode 100644 index 000000000..856aee5b7 --- /dev/null +++ b/googletest/cmake/gtest_prod.pc.in @@ -0,0 +1,7 @@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: gtest_prod +Description: GoogleTest (header for production code) +Version: @PROJECT_VERSION@ +URL: https://github.com/google/googletest +Cflags: -I${includedir}