On Nov 9, 2009, at 12:00 PM, Brad King wrote:

James C. Sutherland wrote:
However, I just discovered that this is a deprecated feature, and that
   install(EXPORT...)
should be used instead.

Good, it is much more modern and more powerful.

However, it is not clear to me how to incorporate dependencies when using the install(EXPORT) approach. Are we now supposed to do this manually, or am I missing something?

The myproj-targets.cmake file that install(EXPORT) puts in the
install tree should already have all the dependencies (actually
that file includes a per-configuration file which defines all
the libraries).  See this page for details:

 http://www.cmake.org/Wiki/CMake_2.6_Notes

I think that I have this figured out now. I am collecting the library dependencies and shoving them into the Config file that find_package() uses. This seems to work just fine.

What are you putting in the Config?  Typically the <pkg>Config.cmake
file should just include the file produced by install(EXPORT).

The library I am building pulls in several other libraries (MPI, BLAS, Boost, etc). I would like any down-stream apps that use my library to automatically be able to include any appropriate header files and link to appropriate third-party libraries that were included in my library.

I have the following in my Config file:

--------------- <snip> ---------------
set( ExprLib_FOUND 1 )

set( ExprLib_INCLUDE_DIR @ExprLib_INCLUDE@ )

set( ExprLib_TPL_INCLUDE_DIRS @TPL_INCLUDE_DIRS@ )

include( @CMAKE_INSTALL_PREFIX@/lib/expression/ExprLib.cmake )

set( ExprLib_LIBRARIES
   @CMAKE_INSTALL_PREFIX@/lib/expression/@ExprInstallLib@
   @TPL_LIBRARIES@
   )
--------------- </snip> ---------------

Above, TPL_INCLUDE_DIRS is a set of paths for all libraries that are required by this one, and TPL_LIBRARIES is a list of fully qualified libraries. I am advertising a set of include directories and fully qualified libraries to be propagated downstream to any project that wants to use it.

Is there a better way to accomplish this?
_______________________________________________
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