@@ -176,7 +176,7 @@ def _components(self):
176
176
}
177
177
178
178
@staticmethod
179
- def _create_cmake_module_alias_targets (module_file , targets , is_parallel ):
179
+ def _create_cmake_module_alias_targets (module_file , targets ):
180
180
content = ""
181
181
for alias , aliased in targets .items ():
182
182
content += textwrap .dedent ("""\
@@ -193,14 +193,23 @@ def _create_cmake_module_alias_targets(module_file, targets, is_parallel):
193
193
set_property(TARGET hdf5::hdf5_hl_cpp PROPERTY INTERFACE_LINK_LIBRARIES HDF5::HL_CXX)
194
194
endif()
195
195
""" )
196
- content += textwrap .dedent ("set(HDF5_IS_PARALLEL {})" .format ("ON" if is_parallel else "OFF" ))
196
+ tools .save (module_file , content )
197
+
198
+ @staticmethod
199
+ def _create_cmake_module_variables (module_file , is_parallel ):
200
+ content = "set(HDF5_IS_PARALLEL {})" .format ("ON" if is_parallel else "OFF" )
197
201
tools .save (module_file , content )
198
202
199
203
@property
200
- def _module_file_rel_path (self ):
204
+ def _module_file_targets_rel_path (self ):
201
205
return os .path .join ("lib" , "cmake" ,
202
206
"conan-official-{}-targets.cmake" .format (self .name ))
203
207
208
+ @property
209
+ def _module_file_variables_rel_path (self ):
210
+ return os .path .join ("lib" , "cmake" ,
211
+ "conan-official-{}-variables.cmake" .format (self .name ))
212
+
204
213
def package (self ):
205
214
self .copy ("COPYING" , dst = "licenses" , src = self ._source_subfolder )
206
215
cmake = self ._configure_cmake ()
@@ -211,8 +220,11 @@ def package(self):
211
220
# but component targets have a lower case namespace prefix. hdf5::hdf5 refers to the C library only
212
221
components = self ._components ()
213
222
self ._create_cmake_module_alias_targets (
214
- os .path .join (self .package_folder , self ._module_file_rel_path ),
215
- {"hdf5::{}" .format (component ["alias_target" ]): "HDF5::{}" .format (component ["component" ]) for component in components .values ()},
223
+ os .path .join (self .package_folder , self ._module_file_targets_rel_path ),
224
+ {"hdf5::{}" .format (component ["alias_target" ]): "HDF5::{}" .format (component ["component" ]) for component in components .values ()}
225
+ )
226
+ self ._create_cmake_module_variables (
227
+ os .path .join (self .package_folder , self ._module_file_variables_rel_path ),
216
228
self .options .get_safe ("parallel" , False )
217
229
)
218
230
@@ -229,14 +241,15 @@ def _config_libname(lib):
229
241
230
242
self .cpp_info .components [component_name ].set_property ("cmake_target_name" , f"hdf5::{ alias_target } " )
231
243
self .cpp_info .components [component_name ].set_property ("pkg_config_name" , alias_target )
244
+ self .cpp_info .components [component_name ].set_property ("cmake_build_modules" , [self ._module_file_variables_rel_path ])
232
245
self .cpp_info .components [component_name ].libs = [_config_libname (alias_target )]
233
246
self .cpp_info .components [component_name ].requires = requirements
234
247
235
248
# TODO: to remove in conan v2 once cmake_find_package_* generators removed
236
249
self .cpp_info .components [component_name ].names ["cmake_find_package" ] = component
237
250
self .cpp_info .components [component_name ].names ["cmake_find_package_multi" ] = component
238
- self .cpp_info .components [component_name ].build_modules ["cmake_find_package" ] = [self ._module_file_rel_path ]
239
- self .cpp_info .components [component_name ].build_modules ["cmake_find_package_multi" ] = [self ._module_file_rel_path ]
251
+ self .cpp_info .components [component_name ].build_modules ["cmake_find_package" ] = [self ._module_file_targets_rel_path , self . _module_file_variables_rel_path ]
252
+ self .cpp_info .components [component_name ].build_modules ["cmake_find_package_multi" ] = [self ._module_file_targets_rel_path , self . _module_file_variables_rel_path ]
240
253
241
254
self .cpp_info .set_property ("cmake_find_mode" , "both" )
242
255
self .cpp_info .set_property ("cmake_file_name" , "HDF5" )
0 commit comments