This is not a question but a finding during a debugging session I like to share and a documentation enhancement request.

We have a number of projects that reside in different repositories including library projects that are chained up by find_package in conjunction with -config.cmake files that each library projects installs. So far we just had this rule: The N project builds are independent from each other. All they share is a common CMAKE_INSTALL_PREFIX

This strategy has proven to reliable and even noob proof.

Now we started installing our packages on the system and keep working on the development version independent from these installation. Which caused some trouble...

If Proj-libFoo is installed to /usr, Proj-libBar depends on it and is configured with
  -DCMAKE_INSTALL_PREFIX=$HOME/projects/install
it will pick the one in /usr.
It took me some time to figure where CMAKE_INSTALL_PREFIX is injected into the list of prefixes to consider by find_package: CMAKE_SYSTEM_PREFIX_PATH in cmFindPackageCommand.cxx
   this->AddCMakePath("CMAKE_SYSTEM_PREFIX_PATH")
CMAKE_SYSTEM_PREFIX_PATH holds a list of prefixes (/usr/local, /usr,...) where CMAKE_INSTALL_PREFIX is the last entry.

That's the reason why our "just point the project to the others by using CMAKE_INSTALL_PREFIX" rule fell apart.

The fix is easy: just set CMAKE_PREFIX_PATH to the same location that CMAKE_INSTALL_PRFIX is set to.


Guys, please add the role that CMAKE_INSTALL_PREFIX plays for find_package to the docs.


Thanks,
Maik


_______________________________________________
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