[cmake-developers] FindBoost: boost version vs cached variables
Philip Lowman
philip at yhbt.com
Mon Jul 2 00:14:18 EDT 2012
Andriy,
Sorry for the delay in responding. I did some additional testing tonight
and merged the changes into next. Thanks again for reporting this.
On Thu, Jun 21, 2012 at 1:12 PM, Andriy Gapon <avg at icyb.net.ua> wrote:
> on 20/06/2012 07:39 Philip Lowman said the following:
> > I wasn't aware of this defect. Thanks for pointing it out.
> >
> > Could you give the attached version a whirl? I got rid of the odd
> caching
> > behavior (not sure exactly why FindBoost was written that way to begin
> with) and
> > this appears to resolve the bug.
>
> Yes, thank you very much!
> With the attached version the Boost detection works as expected. And just
> in
> case: I haven't run into any regressions with a real/larger project.
>
> > On Tue, Jun 19, 2012 at 10:54 AM, Andriy Gapon <avg at icyb.net.ua
> > <mailto:avg at icyb.net.ua>> wrote:
> >
> >
> > FindBoost.cmake currently (as of CMake 2.8.8) has fairly simply
> logic to see if
> > Boost is already found and the relevant variables are cached.
> > Essentially that logic verifies that Boost_INCLUDE_DIR and
> > Boost_${COMPONENT}_FOUND variables are set.
> >
> > What it doesn't do is validate that the found/cached Boost version
> satisfies the
> > requested version. At least it seems so. And this is amplified by
> the fact that
> > the variables remained set and cached even if the original search
> for Boost
> > couldn't find a satisfactory version.
> >
> > A sample CMakeLists.txt file:
> >
> > CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
> > PROJECT(boost_test)
> > FIND_PACKAGE(Boost 1.51)
> > IF(Boost_FOUND)
> > MESSAGE("Boost 1.51 found!!!")
> > ELSE(Boost_FOUND)
> > MESSAGE("Boost 1.51 not found...")
> > ENDIF(Boost_FOUND)
> >
> >
> > As you know, Boost 1.51 doesn't exist yet.
> >
> > But on a system with Boost 1.48.0 installed I get:
> >
> > $ cmake .
> > -- The C compiler identification is GNU 4.2.1
> > -- The CXX compiler identification is GNU 4.2.1
> > -- Check for working C compiler: /usr/bin/gcc
> > -- Check for working C compiler: /usr/bin/gcc -- works
> > -- Detecting C compiler ABI info
> > -- Detecting C compiler ABI info - done
> > -- Check for working CXX compiler: /usr/bin/c++
> > -- Check for working CXX compiler: /usr/bin/c++ -- works
> > -- Detecting CXX compiler ABI info
> > -- Detecting CXX compiler ABI info - done
> > -- Could NOT find Boost
> > Boost 1.51 not found...
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /home/avg/tmp/boost-test
> >
> > So far so good. Running cmake again:
> >
> > $ cmake .
> > Boost 1.51 found!!!
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /home/avg/tmp/boost-test
> >
> > Adding SET(Boost_DEBUG TRUE) I get the following for a secondary run:
> > $ cmake .
> > -- [ /usr/local/share/cmake/Modules/FindBoost.cmake:519 ] boost
> 1.48.0 is already
> > in the cache. To view debugging messages, please clear the cache.
> > Boost 1.51 found!!!
> > -- Configuring done
> > -- Generating done
> > -- Build files have been written to: /home/avg/tmp/boost-test
> >
> > So FindBoost correctly knows that it has seen boost 1.48.0, but it
> misreports that
> > boost 1.51 is available.
> >
> > --
> > Andriy Gapon
> >
> > --
> >
> > Powered by www.kitware.com <http://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
> >
> >
> >
> >
> > --
> > Philip Lowman
>
>
> --
> Andriy Gapon
>
>
>
--
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20120702/7febcef1/attachment.html>
More information about the cmake-developers
mailing list