[CMake] Multiple calls to find_package(Boost) with different components

Adolfo Rodríguez Tsouroukdissian dofo79 at gmail.com
Mon Dec 21 06:21:08 EST 2009


On Mon, Dec 21, 2009 at 12:09 PM, Marcel Loose <loose at astron.nl> wrote:

> Hi Adolfo,
>
> I think you already answered your question yourself, though maybe you
> didn't realize it. Fortunately you wrote the key phrase
>
> ... Now if I clear all non-internal Boost_* cache variables ...
>
> The thing is, FindBoost keeps track of the components it has already
> found in internal variables named Boost_<component>_FOUND. So, if you
> don't remove these variables from the cache, you're entering the realm
> of undefined behaviour.
>

Ack.


>
> I don't know if the author(s) of FindBoost are to blame, e.g., for
> possible abuse of internal variables; or that you should never do what
> you did. I'm more of a command-line person, so I have no experience with
> groups in the cmake-gui.
>

For now, I guess it'll be the latter, to avoid causing undefined behavior.
Thanks for confirming what's going on.

Adolfo.


>
> Best regards,
> Marcel Loose.
>
>
> On Mon, 2009-12-21 at 10:37 +0100, Adolfo Rodríguez Tsouroukdissian
> wrote:
> > Hi all,
> >
> > I have a use case where find_package(Boost COMPONENTS xxx) is called
> > more than once, and each time with a different set of components, as
> > in the following example:
> >
> >
> > cmake_minimum_required(VERSION 2.6)
> > project(MyBoost)
> >
> > find_package(Boost REQUIRED COMPONENTS date_time)
> > message(STATUS "1st call: Boost_LIBRARIES=${Boost_LIBRARIES}")
> >
> > find_package(Boost REQUIRED COMPONENTS regex)
> > message(STATUS "2nd call: Boost_LIBRARIES=${Boost_LIBRARIES}")
> >
> >
> > Upon configuring the project for the first time, everything works as
> > expected, and the relevant output I get is:
> > -- 1st call: Boost_LIBRARIES=/opt/boost/lib/libboost_date_time-mt.so
> > -- 2nd call:
> >
> Boost_LIBRARIES=/opt/boost/lib/libboost_date_time-mt.so;/opt/boost/lib/libboost_regex-mt.so
> >
> >
> > Now if I clear all non-internal Boost_* cache variables, such as by
> > removing the Boost group in cmake-gui and reconfigure my project, I
> > get
> >
> > -- 1st call: Boost_LIBRARIES=/opt/boost/lib/libboost_date_time-mt.so
> > -- 2nd call: Boost_LIBRARIES=/opt/boost/lib/libboost_date_time-mt.so
> >
> >
> > Which is unexpected. Should the above example work for the two
> > described scenarios, or am I entering some state that yields undefined
> > behavior?
> >
> > Thanks in advance,
> >
> > Adolfo
> >
> > --
> > Adolfo Rodríguez Tsouroukdissian, Ph. D.
> >
> > Robotics engineer
> > PAL ROBOTICS S.L
> > http://www.pal-robotics.com
> > Tel. +34.93.414.53.47
> > Fax.+34.93.209.11.09
> > AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos,
> > pueden contener información privilegiada y/o confidencial que está
> > dirigida exclusivamente a su destinatario. Si usted recibe este
> > mensaje y no es el destinatario indicado, o el empleado encargado de
> > su entrega a dicha persona, por favor, notifíquelo inmediatamente y
> > remita el mensaje original a la dirección de correo electrónico
> > indicada. Cualquier copia, uso o distribución no autorizados de esta
> > comunicación queda estrictamente prohibida.
> >
> > CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s)
> > may contain confidential information which is privileged and intended
> > only for the individual or entity to whom they are addressed.  If you
> > are not the intended recipient, you are hereby notified that any
> > disclosure, copying, distribution or use of this e-mail and/or
> > accompanying document(s) is strictly prohibited.  If you have received
> > this e-mail in error, please immediately notify the sender at the
> > above e-mail address.
> > _______________________________________________
> > 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20091221/3d81cb35/attachment.htm>


More information about the CMake mailing list