I think at this point the FindBoost.cmake file is just going to have to have the same options that BJam has for building boost in all of its variations:
Shared or Static libraries Debug or Release Static or Dynamic C++ Runtime Link Just another thing to add to the mix of possibilities. What would _really_ be helpful is if we could simply get the current Boost build system (BJam) to just create a "UseBoost.cmake" file then all of these issues would just go away. Wouldn't that just be a Utopian solution. ;-) Mike On Sun, Apr 19, 2009 at 2:16 PM, Philip Lowman <phi...@yhbt.com> wrote: > On Sat, Apr 18, 2009 at 4:23 PM, Andreas Pakulat <ap...@gmx.de> wrote: >> >> On 18.04.09 11:24:48, Philip Lowman wrote: >> > On Sat, Apr 18, 2009 at 7:45 AM, Michael Jackson < >> > mike.jack...@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.b...@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. >> >> Right, the reason why it only adds the "s" flag on win32 is because boost >> libs only have that flag on win32 for their static libraries. The reason >> is >> that on linux the static boost libs still link against the shared c >> runtime, while on windows they link against the static c runtime. So the >> variable controls wether to link against a shared or a static boost lib, >> which means lib<component>-<compiler>-<threading>-<version>.a on linux and >> similar on windows, except that here the "s" flag is needed. >> >> All this based on a normal boost installation from source, not using the >> experimental cmake buildsystem. If that one does it differently thats a >> bug >> in the cmake buildsystem for boost. > > I just used bjam and it happily built static libraries for win32 without the > "s" flag on them. > > libboost_filesystem-vc90-mt-1_38.lib > libboost_filesystem-vc90-s-1_38.lib > libboost_filesystem-vc90-mt-s-1_38.lib > > So I guess the question is how to fix FindBoost to do the right thing > without breaking anyone's builds. > > -- > Philip Lowman > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake > _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake