Commit 0e8e0e07 authored by Matthew Woehlke's avatar Matthew Woehlke
Browse files

Fix library install destinations



Modify library install destinations to install .dll's to the correct
location (`bin`, not `lib`), and to install other artifacts to the
correct platform-dependent location by using GNUInstallDirs. This is
required for some distributions (e.g. Fedora) and will fix an issue that
otherwise requires those distributions to patch the upstream sources.
Also, add options to suppress installation, which may be useful for
projects that embed Google Test.

Since Google Test is trying to support archaic versions of CMake, a
brain-dead fallback (which requires that the user set either LIB_SUFFIX
or CMAKE_INSTALL_LIBDIR themselves) is included for versions that
predate GNUInstallDirs.

Fixes #1161.
Co-Authored-By: default avatard3x0r <d3x0r@users.noreply.github.com>
parent ec44c6c1
...@@ -4,10 +4,22 @@ project( googletest-distribution ) ...@@ -4,10 +4,22 @@ project( googletest-distribution )
enable_testing() enable_testing()
include(CMakeDependentOption)
if (CMAKE_VERSION VERSION_LESS 2.8.5)
set(CMAKE_INSTALL_BINDIR "bin" CACHE STRING "User executables (bin)")
set(CMAKE_INSTALL_LIBDIR "lib${LIB_SUFFIX}" CACHE STRING "Object code libraries (lib)")
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE STRING "C header files (include)")
mark_as_advanced(CMAKE_INSTALL_BINDIR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR)
else()
include(GNUInstallDirs)
endif()
option(BUILD_GTEST "Builds the googletest subproject" OFF) option(BUILD_GTEST "Builds the googletest subproject" OFF)
cmake_dependent_option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON "BUILD_GTEST OR BUILD_GMOCK" OFF)
#Note that googlemock target already builds googletest #Note that googlemock target already builds googletest
option(BUILD_GMOCK "Builds the googlemock subproject" ON) option(BUILD_GMOCK "Builds the googlemock subproject" ON)
cmake_dependent_option(INSTALL_GMOCK "Enable installation of googlemock. (Projects embedding googlemock may want to turn this OFF.)" ON "BUILD_GMOCK" OFF)
if(BUILD_GMOCK) if(BUILD_GMOCK)
add_subdirectory( googlemock ) add_subdirectory( googlemock )
......
...@@ -103,10 +103,14 @@ endif() ...@@ -103,10 +103,14 @@ endif()
######################################################################## ########################################################################
# #
# Install rules # Install rules
install(TARGETS gmock gmock_main if(INSTALL_GMOCK)
DESTINATION lib) install(TARGETS gmock gmock_main
install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
DESTINATION include) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif()
######################################################################## ########################################################################
# #
......
...@@ -102,10 +102,14 @@ endif() ...@@ -102,10 +102,14 @@ endif()
######################################################################## ########################################################################
# #
# Install rules # Install rules
install(TARGETS gtest gtest_main if(INSTALL_GTEST)
DESTINATION lib) install(TARGETS gtest gtest_main
install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
DESTINATION include) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif()
######################################################################## ########################################################################
# #
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment