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