[CMake] Building Boost as an ExternalProject

Michael Powell mwpowellhtx at gmail.com
Mon Oct 2 14:34:45 EDT 2017


Hello,

This question has been raised from time to time I think. I am trying
to build Boost as an ExternalProject, but I am ending up with an
error: 'cmd.exe' returned with exit code 1. Along these lines.

Perhaps I have involved one too many variables, but I doubt it. Ignore
the cross-plat stuff, this is building on Windows for the purposes of
this conversation.

I tried to configure ExternalProject_Add with as much verbosity as
possible, but unfortunately the process is not especially talkative as
it turns out. But for the EC 1.

set (BOOST_VERSION  1.65.1)

message (STATUS "Adding Boost ${BOOST_VERSION} as an external project.")

set (BOOST_BOOTSTRAP_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/boostbuild)
set (BOOST_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/boostbuild)
set (BOOST_BUILD_PREFIX ${BOOST_BOOTSTRAP_PREFIX}/boost)
set (BOOST_GIT_REPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/repos/boost)

if (WIN32)
    set (BOOST_BOOTSTRAP_CMD ${BOOST_GIT_REPO_DIR}/bootstrap.bat)
    # It was bjam at one point; it is now b2
    set (BOOST_BUILD_CMD ${BOOST_GIT_REPO_DIR}/b2.exe)
elseif (UNIX)
    set (BOOST_BOOTSTRAP_CMD ./${BOOST_GIT_REPO_DIR}/bootstrap.sh)
    set (BOOST_BUILD_CMD ./${BOOST_GIT_REPO_DIR}/b2)
endif ()

#  TODO: TBD: For now, assuming only 64-bit address models.
set (BOOST_ADDR_MODEL 64)

# TODO: TBD: align with the toolchain that we want to build through
the CMake here... For now assuming:
if (MSVC_VERSION EQUAL 1900)
    set (BOOST_TOOLSET msvc-14.0)
endif ()

ExternalProject_Add (boost
    # PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/repos/boost
    GIT_REPOSITORY git at github.com:boostorg/boost.git
    GIT_TAG boost-${BOOST_VERSION}
    GIT_PROGRESS ON
    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:STRING=${BOOST_INSTALL_PREFIX}
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/repos/boost
    CONFIGURE_COMMAND ${BOOST_BOOTSTRAP_CMD} --prefix=${BOOST_BOOTSTRAP_PREFIX}
    # I do not necessarily care about any other Boost build options;
but that could change the further I get into unit testing, at least so
long as I will be adopting the test library for usage.
    BUILD_COMMAND ${BOOST_BUILD_CMD} --with-test
toolset=${BOOST_TOOLSET} variant=debug link=static stage
--prefix=${BOOST_BUILD_PREFIX}
    LOG_DOWNLOAD ON
    LOG_UPDATE ON
    LOG_CONFIGURE ON
    LOG_BUILD ON
    LOG_INSTALL ON
)

Cheers,

Michael Powell


More information about the CMake mailing list