[CMake] Creating dependencies after adding an external project?
Lori Pritchett-Sheats
lpritch at lanl.gov
Wed Apr 20 12:33:12 EDT 2011
I have a project that depends on HDF5. A user can either specify an
existing installation and thus use a find_package or choose to have HDF5
built with the project. I've been using Paraview as a template to
implement this but I can't seem to get the dependencies for my project
defined correctly when it builds HDF5.
So what I'm doing is an ExternalProject_Add command like this:
ExternalProject_Add(hdf5
URL ${HDF5_url}/${HDF5_gz}
URL_MD5 ${HDF5_md5}
UPDATE_COMMAND ""
PREFIX ${HDF5_prefix}
CMAKE_ARGS
-DBUILD_SHARED_LIBS:Bool=OFF
-DBUILD_TESTING:Bool=OFF
-DHDF5_ENABLE_Z_LIB_SUPPORT:Bool=ON
-DZLIB_INCLUDE_DIR:STRING=${ZLIB_INCLUDE_DIR}
-DZLIB_LIBRARY:STRING=${ZLIB_LIBRARY}
-DHDF5_BUILD_HL_LIB:Bool=ON
-DHDF5_BUILD_TOOLS:Bool=ON
-DCMAKE_INSTALL_PREFIX:PATH=${HDF5_prefix}
)
and then to be consistent with the find_package logic, I define
HDF5_INCLUDE_DIR, HDF5_LIBRARIES based on the installation paths I know
eventually will exist like this
set(HDF5_LIBRARY_DIR "${HDF5_prefix}/lib")
set(HDF5_LIBRARY
"${HDF5_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}hdf5${CMAKE_STATIC_LIBRARY_PREFIX}")
set(HDF5_HL_LIBRARY
"${HDF5_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}hdf5_hl${CMAKE_STATIC_LIBRARY_PREFIX}")
set(HDF5_LIBRARIES "${HDF5_HL_LIBRARY};${HDF5_LIBRARY}")
and then when I need to build a binary that links against HDF5, I have
in a CMakeLists.txt file
add_executable(test.x ${test_src_files})
target_link_libraries(test.x ${HDF5_LIBRARIES})
But at build time I see errors complaining about "No rule to make target
<path to HDF5_prefix>/libhdf5.a needed for test.x". I am confused. Do I
need to do more than just define HDF5_LIBRARIES? Do I need to define
libhdf5.a as a target? How do I do that? Defining libhd5 through
add_library( .. UNKNOWN IMPORTED) call does seem right because they are
not imported.
--
Lori A. Pritchett-Sheats, PhD.
CCS-2, Computational Physics and Methods
Office: 505-665-6675
Fax: 505-665-4972
Los Alamos National Laboratory
P.O. Box 1663
MS D413
Los Alamos, NM 87544
More information about the CMake
mailing list