Michael Jackson wrote:
So the problem I see with this is that I still need to know "a priori" what boost libraries are available on the system so exporting the targets really doesn't help much, at least not me.

In your example (quoted below) what happens if I don't have the shared-debug of boost-thread but instead of static-debug? add_executable(my_program main.cpp) target_link_libraries(my_program boost_thread-mt-shared-debug)

Currently I have something like:

target_link_libraries(MyProgram ${Boost_THREAD_LIBRARY})
That line will "do the right thing" depending if I compile in debug or release. The variable is based on what is found in the boost installation. We can all probably agree that the weakest part of FindBoost.cmake is the actual "finding" of the boost libraries based on all of the possible suffixes that are put on the libraries. If there was a UseBoost.cmake file, all the ${Boost_XXX_LIBRARY} would be filled in and no _searching_ would be required by FindBoost.cmake. At most someone might have to just set BOOST_ROOT as an environment variable or point cmake to where the UseBoost.cmake file is at. Debugging problems when "FindBoost.cmake" doesn't find boost is a PITA. I has happened to me more than a few times.
Comments on my comments?

I agree completely... I stumbled on that EXPORT feature and found it neat. The find_package still needs fixing. But the case where I just want to build my stuff against a noninstalled tarball comes up a lot for me, so I think this will come in handy, and you won't know it is there if it doesnt.

On the FindBoost front (mostly questions for Brad):

Currently we work with cmake back to 2.6.4, I'd like to do something that works independently of cmake's Modules/FindBoost.cmake (I'm frankly afraid to even look inside that file). CMake will prefer that file unless NO_MODULE is specified, so for users of cmake that precede our upcoming FindBoost.cmake changes, the following will do the Right Thing if a Boost.CMake-built boost is installed:

  find_package(Boost 1.41.0 COMPONENTS signals NO_MODULE)

as the Config mode path search will be done for a BoostConfig.cmake and BoostConfigVersion.cmake, and we win. I'm wondering:

- Could the FindBoost.cmake module be set up to first perform a Config search, and then fall back to what it does now if that fails? e.g. I have a 2.8.1 cmake but a 1.33.1 boost from my old linux distro.

- How should this work in the presence of multiple simultaneous installed boosts? It looks to me like this isn't a standard use-case envisioned by find_package, but maybe I'm missing something.

-t



_______________________________________________
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake

Reply via email to