[gtest]Re-fix port_main/port_maind libraries path and add gmock cmake files.

This commit is contained in:
JackBoosY 2019-07-18 00:11:23 -07:00
parent 2467136b31
commit 2865da8f4a
5 changed files with 113 additions and 27 deletions

View File

@ -1,4 +1,4 @@
Source: gtest
Version: 2019-01-04-2
Version: 2019-01-04-3
Homepage: https://github.com/google/googletest
Description: GoogleTest and GoogleMock testing frameworks.

View File

@ -0,0 +1,30 @@
diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
index 9d135ff..0be8a22 100644
--- a/googlemock/CMakeLists.txt
+++ b/googlemock/CMakeLists.txt
@@ -66,6 +66,25 @@ endif()
# call it again here.
config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake
+# Create the CMake package file descriptors.
+if (INSTALL_GTEST)
+ include(CMakePackageConfigHelpers)
+ set(cmake_package_name GMock)
+ set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "")
+ set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "")
+ set(cmake_files_install_dir "share/${cmake_package_name}")
+ set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake")
+ write_basic_package_version_file(${version_file} COMPATIBILITY AnyNewerVersion)
+ install(EXPORT ${targets_export_name}
+ NAMESPACE ${cmake_package_name}::
+ DESTINATION ${cmake_files_install_dir})
+ set(config_file "${generated_dir}/${cmake_package_name}Config.cmake")
+ configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in"
+ "${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir})
+ install(FILES ${version_file} ${config_file}
+ DESTINATION ${cmake_files_install_dir})
+endif()
+
# Adds Google Mock's and Google Test's header directories to the search path.
set(gmock_build_include_dirs
"${gmock_SOURCE_DIR}/include"

View File

@ -0,0 +1,68 @@
diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
index 3e72d75..9d135ff 100644
--- a/googlemock/CMakeLists.txt
+++ b/googlemock/CMakeLists.txt
@@ -115,7 +115,8 @@ endif()
########################################################################
#
# Install rules
-install_project(gmock gmock_main)
+install_project(gmock)
+install_project(gmock_main)
########################################################################
#
diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt
index e33718b..a049c2c 100644
--- a/googletest/CMakeLists.txt
+++ b/googletest/CMakeLists.txt
@@ -136,7 +136,8 @@ target_link_libraries(gtest_main PUBLIC gtest)
########################################################################
#
# Install rules
-install_project(gtest gtest_main)
+install_project(gtest)
+install_project(gtest_main)
########################################################################
#
diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake
index 69defc8..cf7295a 100644
--- a/googletest/cmake/internal_utils.cmake
+++ b/googletest/cmake/internal_utils.cmake
@@ -317,11 +317,15 @@ function(install_project)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
# Install the project targets.
+ set (LIB_INSTALL_DST ${CMAKE_INSTALL_LIBDIR})
+ if (${ARGN} MATCHES "_main")
+ set (LIB_INSTALL_DST ${CMAKE_INSTALL_LIBDIR}/manual-link)
+ endif()
install(TARGETS ${ARGN}
EXPORT ${targets_export_name}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ ARCHIVE DESTINATION "${LIB_INSTALL_DST}"
+ LIBRARY DESTINATION "${LIB_INSTALL_DST}")
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# Install PDBs
foreach(t ${ARGN})
@@ -330,7 +334,7 @@ function(install_project)
get_target_property(t_pdb_output_directory ${t} PDB_OUTPUT_DIRECTORY)
install(FILES
"${t_pdb_output_directory}/\${CMAKE_INSTALL_CONFIG_NAME}/$<$<CONFIG:Debug>:${t_pdb_name_debug}>$<$<NOT:$<CONFIG:Debug>>:${t_pdb_name}>.pdb"
- DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ DESTINATION ${LIB_INSTALL_DST}
OPTIONAL)
endforeach()
endif()
@@ -340,7 +344,7 @@ function(install_project)
configure_file("${PROJECT_SOURCE_DIR}/cmake/${t}.pc.in"
"${configured_pc}" @ONLY)
install(FILES "${configured_pc}"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ DESTINATION "${LIB_INSTALL_DST}/pkgconfig")
endforeach()
endif()
endfunction()

View File

@ -11,7 +11,9 @@ vcpkg_from_github(
SHA512 1642a9cf1923d00c52c346399941517787431dad3e6d3a5da07bc02243a231a95e30e0a9568ffd29bb9b9757f15c1c47d2d811c2bedb301f2d27cf912be0a534
HEAD_REF master
PATCHES
${CMAKE_CURRENT_LIST_DIR}/0002-Fix-z7-override.patch
0002-Fix-z7-override.patch
fix-main-lib-path.patch
fix-gmock-cmake.patch
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" GTEST_FORCE_SHARED_CRT)
@ -28,6 +30,7 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/GTest)
vcpkg_fixup_cmake_targets(CONFIG_PATH share/GMock)
file(
INSTALL
@ -49,31 +52,11 @@ file(
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(INSTALL ${SOURCE_PATH}/googletest/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/gtest RENAME copyright)
if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_maind.lib)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtest_maind.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock_maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gmock_maind.lib)
file(READ ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-debug.cmake DEBUG_CONFIG)
string(REPLACE "\${_IMPORT_PREFIX}/debug/lib/gtest_maind.lib"
"\${_IMPORT_PREFIX}/debug/lib/manual-link/gtest_maind.lib" DEBUG_CONFIG "${DEBUG_CONFIG}")
string(REPLACE "\${_IMPORT_PREFIX}/debug/lib/gmock_maind.lib"
"\${_IMPORT_PREFIX}/debug/lib/manual-link/gmock_maind.lib" DEBUG_CONFIG "${DEBUG_CONFIG}")
file(WRITE ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-debug.cmake "${DEBUG_CONFIG}")
endif()
if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest_main.lib)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock_main.lib)
file(READ ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-release.cmake RELEASE_CONFIG)
string(REPLACE "\${_IMPORT_PREFIX}/lib/gtest_main.lib"
"\${_IMPORT_PREFIX}/lib/manual-link/gtest_main.lib" RELEASE_CONFIG "${RELEASE_CONFIG}")
string(REPLACE "\${_IMPORT_PREFIX}/lib/gmock_main.lib"
"\${_IMPORT_PREFIX}/lib/manual-link/gmock_main.lib" RELEASE_CONFIG "${RELEASE_CONFIG}")
file(WRITE ${CURRENT_PACKAGES_DIR}/share/gtest/GTestTargets-release.cmake "${RELEASE_CONFIG}")
endif()
# Install gmock cmake files.
file(GLOB GMOCK_CMAKE_FILES ${CURRENT_PACKAGES_DIR}/share/gtest/GMock*.cmake)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/gmock)
file(COPY ${GMOCK_CMAKE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/share/gmock)
file(REMOVE ${GMOCK_CMAKE_FILES})
vcpkg_copy_pdbs()

View File

@ -1,6 +1,11 @@
The package gtest is compatible with built-in CMake targets:
enable_testing()
find_package(GTest MODULE REQUIRED)
target_link_libraries(main PRIVATE GTest::GTest GTest::Main)
find_package(GMock CONFIG REQUIRED)
target_link_libraries(main PRIVATE GMock::gmock GMock::gmock_main)
add_test(AllTestsInMain main)