Skip to content

Commit 0126eba

Browse files
authored
Merge pull request #22 from Knitschi/issue20
Fix Issue20
2 parents 5b8b321 + 0ef6a18 commit 0126eba

File tree

3 files changed

+85
-138
lines changed

3 files changed

+85
-138
lines changed

googlemock/CMakeLists.txt

Lines changed: 4 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -94,76 +94,13 @@ cxx_library(gmock_main
9494
src/gmock_main.cc)
9595
add_export_macro_interface_defintion( gmock_main GTEST_LINKED_AS_SHARED_LIBRARY=1 )
9696

97+
# preserve compatibility with old GTest hunter package
98+
set_target_properties(gmock_main PROPERTIES EXPORT_NAME main)
99+
97100
########################################################################
98101
#
99102
# Install rules
100-
101-
set(config_install_dir "lib/cmake/GMock")
102-
set(include_install_dir "include")
103-
104-
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
105-
106-
107-
# Configuration
108-
set(version_config "${generated_dir}/GMockConfigVersion.cmake")
109-
set(project_config "${generated_dir}/GMockConfig.cmake")
110-
set(targets_export_name "GMockTargets")
111-
set(namespace "GMock::")
112-
113-
# Include module with fuction 'write_basic_package_version_file'
114-
include(CMakePackageConfigHelpers)
115-
116-
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
117-
# Note: PROJECT_VERSION is used as a VERSION
118-
write_basic_package_version_file(
119-
"${version_config}" COMPATIBILITY SameMajorVersion
120-
)
121-
122-
# Configure '<PROJECT-NAME>Config.cmake'
123-
# Use variables:
124-
# * targets_export_name
125-
# * PROJECT_NAME
126-
configure_package_config_file(
127-
"cmake/Config.cmake.in"
128-
"${project_config}"
129-
INSTALL_DESTINATION "${config_install_dir}"
130-
)
131-
132-
133-
set_target_properties(gmock_main PROPERTIES EXPORT_NAME main)
134-
# Targets:
135-
install(
136-
TARGETS gmock gmock_main
137-
EXPORT "${targets_export_name}"
138-
LIBRARY DESTINATION "lib"
139-
ARCHIVE DESTINATION "lib"
140-
RUNTIME DESTINATION "bin"
141-
INCLUDES DESTINATION "${include_install_dir}"
142-
)
143-
144-
# Headers:
145-
install(
146-
DIRECTORY ${gmock_SOURCE_DIR}/include/gmock
147-
DESTINATION "${include_install_dir}"
148-
FILES_MATCHING PATTERN "*.h"
149-
)
150-
151-
# Config
152-
install(
153-
FILES "${project_config}" "${version_config}"
154-
DESTINATION "${config_install_dir}"
155-
)
156-
157-
# Config
158-
install(
159-
EXPORT "${targets_export_name}"
160-
NAMESPACE "${namespace}"
161-
DESTINATION "${config_install_dir}"
162-
)
163-
164-
# Debug information .pdb for MSVC
165-
install_pdb_files(gmock)
166-
install_pdb_files(gmock_main)
103+
add_install_rules( GMock "gmock;gmock_main" )
167104

168105
########################################################################
169106
#

googletest/CMakeLists.txt

Lines changed: 3 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ add_export_macro_interface_defintion(gtest GTEST_LINKED_AS_SHARED_LIBRARY=1 )
8383
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
8484
add_export_macro_interface_defintion(gtest_main GTEST_MAIN_LINKED_AS_SHARED_LIBRARY=1 )
8585
target_link_libraries(gtest_main PUBLIC gtest)
86+
# preserve compatibility with old GTest hunter package
87+
set_target_properties(gtest_main PROPERTIES EXPORT_NAME main)
8688

8789
# Summary of tuple support for Microsoft Visual Studio:
8890
# Compiler version(MS) version(cmake) Support
@@ -97,72 +99,7 @@ endif()
9799
########################################################################
98100
#
99101
# Install rules
100-
101-
set(config_install_dir "lib/cmake/GTest")
102-
set(include_install_dir "include")
103-
104-
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
105-
106-
# Configuration
107-
set(version_config "${generated_dir}/GTestConfigVersion.cmake")
108-
set(project_config "${generated_dir}/GTestConfig.cmake")
109-
set(targets_export_name "GTestTargets")
110-
set(namespace "GTest::")
111-
112-
# Include module with fuction 'write_basic_package_version_file'
113-
include(CMakePackageConfigHelpers)
114-
115-
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
116-
# Note: PROJECT_VERSION is used as a VERSION
117-
write_basic_package_version_file(
118-
"${version_config}" COMPATIBILITY SameMajorVersion
119-
)
120-
121-
# Configure '<PROJECT-NAME>Config.cmake'
122-
# Use variables:
123-
# * targets_export_name
124-
# * PROJECT_NAME
125-
configure_package_config_file(
126-
"cmake/Config.cmake.in"
127-
"${project_config}"
128-
INSTALL_DESTINATION "${config_install_dir}"
129-
)
130-
131-
set_target_properties(gtest_main PROPERTIES EXPORT_NAME main)
132-
133-
# Targets:
134-
install(
135-
TARGETS gtest gtest_main
136-
EXPORT "${targets_export_name}"
137-
LIBRARY DESTINATION "lib"
138-
ARCHIVE DESTINATION "lib"
139-
RUNTIME DESTINATION "bin"
140-
INCLUDES DESTINATION "${include_install_dir}"
141-
)
142-
143-
# Headers:
144-
install(
145-
DIRECTORY ${gtest_SOURCE_DIR}/include/gtest
146-
DESTINATION "${include_install_dir}"
147-
FILES_MATCHING PATTERN "*.h"
148-
)
149-
150-
# Config
151-
install(
152-
FILES "${project_config}" "${version_config}"
153-
DESTINATION "${config_install_dir}"
154-
)
155-
156-
# Config
157-
install(
158-
EXPORT "${targets_export_name}"
159-
NAMESPACE "${namespace}"
160-
DESTINATION "${config_install_dir}"
161-
)
162-
163-
# Debug information .pdb for MSVC
164-
install_pdb_files(gtest)
165-
install_pdb_files(gtest_main)
102+
add_install_rules( GTest "gtest;gtest_main")
166103

167104
########################################################################
168105
#

googletest/cmake/internal_utils.cmake

Lines changed: 78 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,83 @@ function( add_export_macro_interface_defintion target definition )
269269
endif()
270270
endfunction()
271271

272+
# add_install_rules( package targets)
273+
#
274+
# Adds install rules for the GMock and GTest packages.
275+
function( add_install_rules package targets )
276+
277+
set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${package}")
278+
279+
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
280+
281+
# Configuration
282+
set(version_config "${generated_dir}/${package}ConfigVersion.cmake")
283+
set(project_config "${generated_dir}/${package}Config.cmake")
284+
set(targets_export_name "${package}Targets")
285+
set(namespace "${package}::")
286+
287+
# Include module with fuction 'write_basic_package_version_file'
288+
include(CMakePackageConfigHelpers)
289+
290+
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
291+
# Note: PROJECT_VERSION is used as a VERSION
292+
write_basic_package_version_file(
293+
"${version_config}" COMPATIBILITY SameMajorVersion
294+
)
295+
296+
# Configure '<PROJECT-NAME>Config.cmake'
297+
# Use variables:
298+
# * targets_export_name
299+
# * PROJECT_NAME
300+
configure_package_config_file(
301+
"cmake/Config.cmake.in"
302+
"${project_config}"
303+
INSTALL_DESTINATION "${config_install_dir}"
304+
)
305+
306+
# Targets:
307+
install(
308+
TARGETS ${targets}
309+
EXPORT "${targets_export_name}"
310+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
311+
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
312+
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
313+
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
314+
)
315+
316+
# Headers:
317+
string(TOLOWER ${package} package_lower)
318+
install(
319+
DIRECTORY ${${package_lower}_SOURCE_DIR}/include/${package_lower}
320+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
321+
FILES_MATCHING PATTERN "*.h"
322+
)
323+
324+
# Config
325+
install(
326+
FILES "${project_config}" "${version_config}"
327+
DESTINATION "${config_install_dir}"
328+
)
329+
330+
# Config
331+
install(
332+
EXPORT "${targets_export_name}"
333+
NAMESPACE "${namespace}"
334+
DESTINATION "${config_install_dir}"
335+
)
336+
337+
# Debug information .pdb for MSVC
338+
foreach(target ${targets})
339+
install_pdb_files(${target})
340+
endforeach()
341+
342+
endfunction()
343+
344+
272345
# install_pdb_files( target )
273346
#
274-
# makes sure that the .pdb files for the target end up
275-
# besides the .lib when the target is installed
347+
# Makes sure that compiler and linker generated .pdb files ares installed
348+
# when compiling with MSVC and debug options.
276349
function( install_pdb_files target )
277350
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.1.0) # COMPILE_PDB_... properties where introduced with cmake 3.1
278351
foreach( config ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
@@ -291,7 +364,7 @@ function( install_pdb_files target )
291364

292365
install(
293366
FILES ${output_dir}/${output_name}.pdb
294-
DESTINATION "lib"
367+
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
295368
CONFIGURATIONS ${config}
296369
)
297370

@@ -301,13 +374,13 @@ function( install_pdb_files target )
301374
target_has_pdb_linker_output( has_pdb_linker_output ${target} ${config})
302375
if(has_pdb_linker_output)
303376

304-
set( output_name ${target}${name_config_postfix}-compiler )
377+
set( output_name ${target}${name_config_postfix}-linker )
305378
set_property( TARGET ${target} PROPERTY PDB_NAME_${config_suffix} ${output_name} )
306379
set_property( TARGET ${target} PROPERTY PDB_OUTPUT_DIRECTORY_${config_suffix} ${output_dir} )
307380

308381
install(
309382
FILES ${output_dir}/${output_name}.pdb
310-
DESTINATION "bin"
383+
DESTINATION "${CMAKE_INSTALL_BINDIR}"
311384
CONFIGURATIONS ${config}
312385
)
313386

0 commit comments

Comments
 (0)