[CMake] findBoost says it finds static unit testing libraries, but does not set them

Philip Lowman philip at yhbt.com
Fri Apr 17 23:56:02 EDT 2009


On Thu, Apr 16, 2009 at 4:27 AM, Jonatan Bijl <jonatan.bijl at tba.nl> wrote:

>  Boost_Unit_test_framework_library is not in the list.
>
>
>
> About the filenames: these libs are the result of compiling boost 1.38.0
> with cmake under linux. (Cmake for boost is still experimental). It might be
> that the problem is in boost’s Cmakelists.
>
That is definitely a bug that needs to be fixed in Boost's experimental
CMake build.

If you rename the library to "libboost_unit_test_framework-mt-sd.a",
however, it's still not going to solve your problem.

The 's' tag is for static C++ runtime libraries and for some reason it's
enabled on Windows in FindBoost.cmake when you set Boost_USE_STATIC_LIBS,
but not on other platforms.  This has always seemed a bit weird to me and
I've wondered why this is.

SET( _boost_STATIC_TAG "")
  set( _boost_ABI_TAG "")
  IF (WIN32)
    IF(MSVC)
      SET (_boost_ABI_TAG "g")
    ENDIF(MSVC)
    IF( Boost_USE_STATIC_LIBS )
      SET( _boost_STATIC_TAG "-s")
    ENDIF( Boost_USE_STATIC_LIBS )
  ENDIF(WIN32)
  SET (_boost_ABI_TAG "${_boost_ABI_TAG}d")
  if(Boost_DEBUG)
    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
      "_boost_STATIC_TAG = ${_boost_STATIC_TAG}")
    message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
      "_boost_ABI_TAG = ${_boost_ABI_TAG}")
  endif()



-- 
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090417/ea4a3080/attachment-0001.htm>


More information about the CMake mailing list