Boost logo

Boost Interest :

Subject: Re: [Boost-cmake] Building boost "with an uninstalled build" and linking to boost libs
From: David Cole (david.cole_at_[hidden])
Date: 2010-03-24 17:14:30

With ExternalProject_Add, you have to specify the location of boost that you
have built/installed directly to the thing that wants to know where it is.
It cannot use FIND_PACKAGE to find boost until after boost is

So you would specify boost's location to the later projects that depend on
it by using a -D argument to tell it where it is directly. Then there is no
"finding" required.

I don't know if this is easily do-able with Boost and ExternalProject_Add...
(mainly because I'm not that familiar with boost usage...) but we certainly
do it all the time with packages like VTK. The project that depends on VTK
gets a -D VTK_DIR to tell it where it is so that find_package is a no-op
find, but just defines the right variables in terms of that VTK_DIR.

I would think boost should be similar, but I know it's more complex than
that just by listening in on lists like this...

Hopefully this helps to clarify rather than muddy things a bit,
David Cole
Kitware, Inc.

On Wed, Mar 24, 2010 at 5:04 PM, Michael Jackson <
mike.jackson_at_[hidden]> wrote:

> I have been playing with "ExternalProject_Add" and I don't think you are
> going to be able to do what you are trying to do. I was using the following:
> project (Combined)
> cmake_minimum_required(VERSION 2.8)
> include(${CMAKE_ROOT}/Modules/ExternalProject.cmake)
> # --------- Setup the Executable output Directory -------------
> # --------- Setup the Executable output Directory -------------
> set (EP_BASE "Boost")
> ExternalProject_Add(
> Boost
> TMP_DIR Boost/tmp
> STAMP_DIR Boost/stamp
> DOWNLOAD_DIR Boost/Download
> BINARY_DIR Boost/Build
> BUILD_COMMAND make -j16
> INSTALL_DIR Boost/Install
> )
> set ($ENV{BOOST_ROOT} "${PROJECT_BINARY_DIR}/Boost/Install")
> set (BOOST_ROOT "${PROJECT_BINARY_DIR}/Boost/Install")
> # ---------- Find Boost Headers/Libraries -----------------------
> SET (Boost_ADDITIONAL_VERSIONS "1.36" "1.36.0" "1.41" "1.41.0" "1.39"
> "1.39.0")
> # --------------------------------------------------------------------
> # MXA_BOOST_HEADERS_ONLY determines if any boost libraries are going to
> # be found with the boost headers. For MXADataModel itself NO boost
> # libraries are required but if you choose to build the ImportGenerator
> # program then you will need the boost program_options library.
> set (MXA_BOOST_COMPONENTS program_options )
> endif()
> include(${PROJECT_BINARY_DIR}/Boost/Install/share/cmake/boost/BoostConfig.cmake)
> The problem is that all the files that Find_package() would normally use
> are NOT available the first time CMake is run. They would ONLY be available
> after boost is compiled and installed. So this seems to be a chicken-and-egg
> thing. Not sure what to do except ask on the CMake Users Mailing list.
> sorry
> ___________________________________________________________
> Mike Jackson
> Principal Software Engineer mike.jackson_at_[hidden]
> BlueQuartz Software Dayton, Ohio
> On Mar 24, 2010, at 3:56 PM, Brian Davis wrote:
>> On Wed, Mar 24, 2010 at 2:44 PM, Michael Jackson <
>> mike.jackson_at_[hidden]> wrote:
>> The Boost-CMake (IMHO) sort of "abused" the cmake system somewhat in order
>> to make it more "bjam" like.
>> In practice if the first pass of FindBoost.cmake does not find anything
>> then I usually have to manually go into the CMakeCache.txt file and remove
>> all the boost variables and re-run CMake. You can also probably do this
>> using the CMake-Gui program.
>> I posted a desirement in the CMake Mantis bug tracker only to find out
>> that all one has to do in CMake GUI is File->"Delete Cache" then config,
>> config, generate, wait for CMake VS Macros to notice something is awry and
>> update the pojects... I still wish there were a button. If I could get a
>> heart rate monitor to sense my level of frustration and automatically rerun
>> a script to delete the cache I think this would be the optimal solution.
>> Basically for each library, look in boost/libs/filesystem/CMakeLists.txt.
>> That file should get you started in the right location to start trying to
>> figure out what is going wrong.
>> Thanks for the words of advice I will keep hacking until I find out what I
>> am doing wrong.
>> Brian
>> _______________________________________________
>> Boost-cmake mailing list
>> Boost-cmake_at_[hidden]
> _______________________________________________
> Boost-cmake mailing list
> Boost-cmake_at_[hidden]

Boost-cmake list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at