@@ -95,12 +95,27 @@ function(qt_copy_or_install)
95
95
qt_non_prefix_copy(COPY ${argv_copy} ${copy_arguments} )
96
96
endfunction ()
97
97
98
- # Create a versioned hard-link for the given target.
98
+ # Create a versioned hard-link for the given target, or a program
99
99
# E.g. "bin/qmake6" -> "bin/qmake".
100
- # If no hard link can be created, make a copy instead.
100
+ #
101
+ # One-value Arguments:
102
+ # WORKING_DIRECTORY
103
+ # The directory where the original file is already placed.
104
+ # SUFFIX
105
+ # The program file extension, only used for PROGRAMS
106
+ # Multi-value Arguments:
107
+ # TARGETS
108
+ # List of targets for which the versioned link will be created.
109
+ # If targets are given, BASE_NAME and SUFFIX will be derived from it.
110
+ # PROGRAMS
111
+ # List of program file names for which the versioned link will be created.
112
+ #
113
+ #
114
+ # NOTE: This assumes that TARGETS, or PROGRAMS are already installed in the
115
+ # WORKING_DIRECTORY.
101
116
#
102
117
# In a multi-config build, create the link for the main config only.
103
- function (qt_internal_install_versioned_link install_dir target )
118
+ function (qt_internal_install_versioned_link)
104
119
if (NOT QT_WILL_INSTALL)
105
120
return ()
106
121
endif ()
@@ -109,13 +124,41 @@ function(qt_internal_install_versioned_link install_dir target)
109
124
return ()
110
125
endif ()
111
126
127
+ set (options )
128
+ set (oneValueArgs "WORKING_DIRECTORY;SUFFIX" )
129
+ set (multiValueArgs "TARGETS;PROGRAMS" )
130
+ cmake_parse_arguments (arg "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
131
+
132
+ if (arg_TARGETS)
133
+ foreach (target "${arg_TARGETS} " )
134
+ _qt_internal_create_versioned_link_or_copy("${arg_WORKING_DIRECTORY} "
135
+ $<TARGET_FILE_BASE_NAME:${target} >
136
+ $<TARGET_FILE_SUFFIX:${target} >)
137
+ endforeach ()
138
+ endif ()
139
+
140
+ if (arg_PROGRAMS)
141
+ foreach (program "${arg_PROGRAMS} " )
142
+ _qt_internal_create_versioned_link_or_copy("${arg_WORKING_DIRECTORY} "
143
+ "${program} "
144
+ "${arg_SUFFIX} " )
145
+ endforeach ()
146
+ endif ()
147
+ endfunction ()
148
+
149
+ # Generate a script for creating a hard-link between the base_name, and
150
+ # base_name${PROJECT_VERSION_MAJOR}.
151
+ #
152
+ # If no hard link can be created, make a copy instead.
153
+ function (_qt_internal_create_versioned_link_or_copy install_dir base_name suffix )
112
154
qt_path_join(install_base_file_path "$\{ qt_full_install_prefix}"
113
- "${install_dir} " "$<TARGET_FILE_BASE_NAME: ${target} > " )
114
- set (original "${install_base_file_path} $<TARGET_FILE_SUFFIX: ${target} > " )
115
- set (linkname "${install_base_file_path}${PROJECT_VERSION_MAJOR} $<TARGET_FILE_SUFFIX: ${target} > " )
155
+ "${install_dir} " "${base_name} " )
156
+ set (original "${install_base_file_path}${suffix} " )
157
+ set (linkname "${install_base_file_path}${PROJECT_VERSION_MAJOR}${suffix} " )
116
158
set (code "set(qt_full_install_prefix \" $\{ CMAKE_INSTALL_PREFIX}\" )"
117
159
" if(NOT \" $ENV\{ DESTDIR}\" STREQUAL \"\" )"
118
160
)
161
+
119
162
if (CMAKE_HOST_WIN32 )
120
163
list (APPEND code
121
164
" if(qt_full_install_prefix MATCHES \" ^[a-zA-Z]:\" )"
0 commit comments