Discussion:
[boost] Follow-up to the CMake follow-up
Peter Dimov via Boost
2017-06-30 23:22:09 UTC
Permalink
Due to the strong interest in my previous follow-up, I'm following it up
with a more complete implementation of the support required for CMake
scenario #1, installing configuration files during "b2 install" such that
subsequent "find_package" calls work (assuming a suitably set
CMAKE_PREFIX_PATH).

You can find it in branch "feature/install-cmake-config" in the superproject
(boostorg/boost).

In other words,

git clone --recursive --depth 64 -b feature/install-cmake-config
https://githib.com/boostorg/boost
bootstrap
b2 headers
b2 install cmake//install variant=debug,release link=static,shared
runtime-link=static,shared

This doesn't yet support installation with more than one toolset, and I'm
sure that some libraries don't work, but a simple test using Filesystem and
ProgramOptions does.

/// CMakeLists.txt: ///

cmake_minimum_required(VERSION 3.5)

project(cmake_demo CXX)

list(APPEND CMAKE_PREFIX_PATH C:/Boost)

find_package(boost_filesystem 1.63.0)
find_package(boost_program_options 1.63.0)

# disable autolink globally
# could also do it per-target

add_definitions(-DBOOST_ALL_NO_LIB=1)

# sample program

add_executable(cmake_demo cmake_demo.cpp)
target_link_libraries(cmake_demo boost::filesystem boost::program_options)

/// cmake_demo.cpp: ///

#include <boost/filesystem.hpp>
#include <boost/program_options.hpp>
#include <cerrno>
#include <iostream>

namespace fs = boost::filesystem;
namespace po = boost::program_options;

int main( int argc, char const* argv[] )
{
po::options_description desc( "Allowed options" );

desc.add_options()
( "help,h", "produce help message" )
( "path,p", po::value<std::string>(), "set initial path" )
;

po::variables_map vm;

try
{
po::store( po::parse_command_line( argc, argv, desc ), vm );
po::notify( vm );
}
catch( std::exception const & x )
{
std::cerr << "Error: " << x.what() << std::endl;
return 1;
}

if( vm.count( "help" ) )
{
std::cout << desc << std::endl;
return 1;
}

fs::path p = fs::current_path();

if( vm.count( "path" ) )
{
p = vm[ "path" ].as<std::string>();
}

std::cout << p << std::endl;
}


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
P F via Boost
2017-07-01 03:16:57 UTC
Permalink
Due to the strong interest in my previous follow-up, I'm following it up with a more complete implementation of the support required for CMake scenario #1, installing configuration files during "b2 install" such that subsequent "find_package" calls work (assuming a suitably set CMAKE_PREFIX_PATH).
You can find it in branch "feature/install-cmake-config" in the superproject (boostorg/boost).
In other words,
git clone --recursive --depth 64 -b feature/install-cmake-config https://githib.com/boostorg/boost
bootstrap
b2 headers
b2 install cmake//install variant=debug,release link=static,shared runtime-link=static,shared
This doesn't yet support installation with more than one toolset, and I'm sure that some libraries don't work, but a simple test using Filesystem and ProgramOptions does.
That looks pretty awesome. A lot of bjam-fu I don’t understand. You should think about writing a tutorial on bjam.

Also, can it be ran by doing?

cd cmake
b2 cmake

I wonder what it would take to integrate it into the main install step.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/

Continue reading on narkive:
Loading...