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

Michael Jackson mike.jackson at bluequartz.net
Sat Apr 18 07:45:27 EDT 2009


On Apr 17, 2009, at 11:56 PM, Philip Lowman wrote:

> 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
>

It is enabled on windows because Windows offers the option to  
statically link to the c++ runtime. I know OS X does NOT offer that  
option. Not sure about linux.

Mike



More information about the CMake mailing list