On 2/14/2012 2:44 PM, Alexander Neundorf wrote:
In the BarConfig.cmake file there would still be either a

set(BAR_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@")
which would work for absolute paths, or a

set(BAR_INCLUDE_DIR "${SomePrefix}/@INCLUDE_INSTALL_DIR@")
which would work only for relative paths, but a simple set() cannot work for
both cases. Am I missing something ?

 $ cat BarConfig.cmake.in
 @PACKAGE_INIT@
 set(BAR_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")

 $ cat CMakeLists.txt
 ...
 set(INCLUDE_INSTALL_DIR ...)
 cmake_package_config_for_install(Bar
   DESTINATION ${CMAKECONFIG_INSTALL_DIR}
   PATH_VARS INCLUDE_INSTALL_DIR)

The macro should check the value of INSTALL_INCLUDE_DIR.

Relative case:

 $ cat BarConfig.cmake
 get_filename_component(BAR_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 # ... repeated based on depth of BarConfig install location
 set(BAR_INCLUDE_DIR "${BAR_INSTALL_PREFIX}/include/bar)

Absolute case when value happens to be under ${CMAKE_INSTALL_PREFIX}:

 $ cat BarConfig.cmake
 get_filename_component(BAR_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 # ... repeated based on depth of BarConfig install location
 set(BAR_INCLUDE_DIR "${BAR_INSTALL_PREFIX}/include/bar)

Outside absolute case:

 $ cat BarConfig.cmake
 get_filename_component(BAR_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 get_filename_component(BAR_INSTALL_PREFIX "${BAR_INSTALL_PREFIX}" PATH)
 # ... repeated based on depth of BarConfig install location
 set(BAR_INCLUDE_DIR "/somewhere/include/bar)

The replacement for @PACKAGE_INIT@ is always the same, and can handle
computing BAR_INSTALL_PREFIX at load time.

In all cases the macro replaces @PACKAGE_INCLUDE_INSTALL_DIR@ with
something that it knows how to compute at configuration time.  It
can replace it with a literal ${BAR_INSTALL_PREFIX} in the relative
and relocatable cases so that the proper prefix appears at load time.

-Brad


P.S. Yury, I apologize for spelling your name incorrectly in my other post.
--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to