[CMake] FindBoost problem

Timothy Shead tshead at sandia.gov
Wed May 26 15:10:34 EDT 2010


On 5/26/10 11:52 AM, Nico Schlömer wrote:
> Hi all,
>
> I'd like to use CMake for an application that I'm developing on an
> Ubuntu machine which needs to link against Boost, i.e., a
> custom-compiled installation at /opt/boost/1.43.0/.
>
> I compiled and installed CMake 2.8.1, FindBoost.cmake comes in handy.
> Ubuntu ships with its own Boost development package (1.40.0) which I
> cannot remove because it's used by other packages. By default, CMake
> finds the stock-Boost (I guess b/c it sits in those default folders),
> so I call cmake with
>
>    cmake -DBOOST_ROOT:PATH=/opt/boost/1.43.0/ /path/to/source/
>
> Boost is found, and the variables are set in CMakeCache.txt, e.g.,
>
>      Boost_INCLUDE_DIR:PATH=/opt/boost/1.43.0/include
>
> I however also notice that the actual libraries are *not* set correctly, as
>
>      Boost_FILESYSTEM_LIBRARY:FILEPATH=/usr/lib/libboost_filesystem-mt.so
>
> This makes the build fail. Setting BOOST_LIBRARYDIR does not help.

Strangely, I ran into this same problem last night; it seems as if 
FindBoost.cmake caches a little *too* aggressively.  In particular, I 
find that if I want to be able to override the default (system) boost 
interactively from any of the CMake guis, I have to do the following in 
my listfile:

	set(BOOST_INCLUDEDIR "" CACHE PATH "")
	set(BOOST_LIBRARYDIR "" CACHE PATH "")
	find_package(Boost COMPONENTS foo bar baz REQUIRED)

... which will detect the default boost the first time I configure.  If 
I want to use a different boost install, I have to do the following:

	* Set BOOST_INCLUDEDIR and BOOST_LIBRARYDIR to my desired boost
	* Delete *all* remaining cached Boost_XXXX variables.
	* Reconfigure

If I don't delete every Boost_XXXX variable, I'll end-up with 
permutations of new and old locations.

Cheers,
Tim

-- 
Timothy M. Shead
Sandia National Laboratories
1424, Data Analysis and Visualization



More information about the CMake mailing list