btw, the new cmake boost 1.41 imports look *very* good so far. The
INSTALL_VERSIONED=ON broke a few things on my first pass, but all
due to path issues.
I'd ideally like to make use of BOOST_INSTALL_CMAKE_DRIVERS and
INSTALL_VERSIONED. Is the intention to just include lib/Boost.cmake
and have it take care of all of the pathing and version information
depending on the results of find_package(Boost 1.41...) or some
such? If lib/Boost.cmake can support multiple versions of boost
installed, it would be *ideal* if the effort required to use boost
were as simple as:
set(Boost_USE_MULTITHREADED ON)
set(Boost_MIN_VERSION 1.41)
set(Boost_SET_INCLUDE ON) # Should default to ON, same concept
for linker flags
include("${CONTRIBOBJ}/lib/Boost.cmake")
find_package(Boost ${Boost_VERSION} COMPONENTS thread NO_MODULE)
# no need for include(${Boost_INCLUDE_DIR}) with Boost_SET_INCLUDE=ON
Err... 1.41.0 builds smoothly, but I'm having issues integrating
boost with cmake 2.6.4. Looking for "the right way" to do things.
If I'm using a custom installation root, do I use find_package
(Boost...) or include(".../BoostConfig.cmake") ? It's installed in to
the custom root, not just built but uninstalled.
CMakeLists.txt:
set(WANT_BOOST_VERSION 1.41.0)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_DEBUG TRUE)
find_package(Boost ${WANT_BOOST_VERSION} REQUIRED date_time graph
program_options regex signals system thread unit_test_framework
NO_MODULE)
# include("${CONTRIBOBJ}/share/boost-${WANT_BOOST_VERSION}/cmake/
BoostConfig.cmake")
if(Boost_NOTFOUND)
message(FATAL_ERROR "Boost not found")
endif()
If you use include() + find_package() you get a bunch of the following
(know it's my fault, but FYI):
Output:
-- found: Boost
globbed: ../../boost-1.41.0//cmake//BoostConfig.cmake
CMake Error at obj/contrib-Darwin-i386/lib/boost-1.41.0/Boost.cmake:
16 (ADD_LIBRARY):
add_library cannot create imported target "boost_date_time-mt-
static"
because another target with the same name already exists.
Call Stack (most recent call first):
obj/contrib-Darwin-i386/share/boost-1.41.0/cmake/BoostConfig.cmake:
28 (include)
cmake/setup_boost.txt:28 (include)
cmake/setup_contrib.txt:19 (INCLUDE)
CMakeLists.txt:16 (INCLUDE)
CMake Error at obj/contrib-Darwin-i386/lib/boost-1.41.0/Boost.cmake:
19 (ADD_LIBRARY):
add_library cannot create imported target "boost_date_time-mt-
shared"
because another target with the same name already exists.
Call Stack (most recent call first):
obj/contrib-Darwin-i386/share/boost-1.41.0/cmake/BoostConfig.cmake:
28 (include)
cmake/setup_boost.txt:28 (include)
cmake/setup_contrib.txt:19 (INCLUDE)
If I use include(".../BoostConfig.cmake") instead, it obviously
doesn't populate Boost_LIBRARIES because there weren't any COMPONENTS
specified:
Linking CXX executable ../obj/contrib-Darwin-i386/bin/foo_unittests
Undefined symbols:
"boost::test_tools::print_log_value<char const*>::operator()
(std::basic_ostream<char, std::char_traits<char> >&, char const*)",
referenced from:
std::basic_ostream<char, std::char_traits<char> >&
boost::test_tools::tt_detail::operator<< <char const*>
(std::basic_ostream<char, std::char_traits<char> >&,
boost::test_tools::tt_detail::print_helper_t<char const*> const&) in
foo_unittests.cc.o
"boost::unit_test::unit_test_log_t::set_checkpoint
(boost::unit_test::basic_cstring<char const>, unsigned long,
boost::unit_test::basic_cstring<char const>)", referenced from:
test_foo::test_method() in foo_unittests.cc.o
I can populate the list of libs that I need by hand, but am looking
for guidance on what's the right way forward.
Is there a correct way to use find_package(Boost...) with an installed
1.41.0 atm? I notice Boost_VERSION is set as a string in
BoostConfig.cmake but the older FindBoost.cmake that comes with cmake
2.6.4 is expecting an integer. -sc
--
Sean Chittenden
s...@chittenden.org
_______________________________________________
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake