[CMake] findBoost says it finds static unit testing libraries, but does not set them
Philip Lowman
philip at yhbt.com
Sat Apr 18 11:24:48 EDT 2009
On Sat, Apr 18, 2009 at 7:45 AM, Michael Jackson <
mike.jackson at bluequartz.net> wrote:
>
> 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
> linkCMake 2.6.3's to the c++ runtime. I know OS X does NOT offer that
> option. Not sure about linux.
The same variable name controls whether or not you're searching for a static
or a shared boost library, however.
if ( WIN32 AND Boost_USE_STATIC_LIBS )
SET (Boost_LIB_PREFIX "lib")
endif()
...
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
IF( Boost_USE_STATIC_LIBS )
SET( _boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES
${CMAKE_FIND_LIBRARY_SUFFIXES})
IF(WIN32)
SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
ELSE(WIN32)
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
ENDIF(WIN32)
ENDIF( Boost_USE_STATIC_LIBS )
Shouldn't there be a difference between the two?
--
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090418/c86004a9/attachment-0001.htm>
More information about the CMake
mailing list