When using the install target command as follows

  INSTALL (
      TARGETS
          ${HDF5_LIB_TARGET}
      EXPORT
          ${HDF5_EXPORTED_TARGETS}
      LIBRARY DESTINATION lib COMPONENT libraries
      ARCHIVE DESTINATION lib COMPONENT libraries
      RUNTIME DESTINATION bin COMPONENT libraries
  )

cmake very nicely generates an HDF5-config.cmake file in the build directory, 
and at install time, in the install directory. This is great.

However, I have project A(paraview) with two subdirectories B (hdf5) and C 
(mystuff), where C "uses" B. All is well except that if C includes the 
hdf5-config.cmake from the Build directory as generated by B 
(ADD_LIBRARY(vtkhdf5 SHARED IMPORTED)) , cmake produces error messages along 
the lines of

CMake Error at D:/cmakebuild/pv-shared/Utilities/hdf5-1.8/HDF5-config.cmake:16 
(ADD_LIBRARY):
add_library cannot create imported target "vtkhdf5" because another target
with the same name already exists.

Naturally, when building C standalone using the install directory of standalone 
B, all works fine.

Everything would be simple, if cmake would simply skip the imported target from 
B the second time it is loaded when called from the subproject C, then a single 
set of config and cmakelists would work all the time, but as it is, extra logic 
needs to be added.

Is there any easy way of telling project C, load the config file if B is not 
part of the same build so that I can reuse the same syntax between separate 
build or common builds. I'd like to use the generated hdf5-config.cmake files 
because they have all the necessary properties set correctly (like when target 
name is not the same as lib name etc etc, which makes things harder like below).

# Import target "vtkhdf5" for configuration "Debug"
SET_PROPERTY(TARGET vtkhdf5 APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
SET_TARGET_PROPERTIES(vtkhdf5 PROPERTIES
  IMPORTED_IMPLIB_DEBUG "D:/cmakebuild/pv-shared/bin/Debug/vtkhdf5ddll.lib"
  IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG "ws2_32;wsock32;C:/Program 
Files/MPICH2/lib/mpi.lib;vtkzlib"
  IMPORTED_LOCATION_DEBUG "D:/cmakebuild/pv-shared/bin/Debug/vtkhdf5ddll.dll"
  )

Thanks

JB


--
John Biddiscombe,                            email:biddisco @ cscs.ch
http://www.cscs.ch/
CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to