[CMake] cmake, boost on windows, and linking: shouldn't find_package have put BOOST_ROOT/lib into LIB?
Daniel Dekkers
d.dekkers at cthrough.nl
Sun Oct 30 05:46:30 EDT 2011
find_package() searches for a package, and sets variables. Typically variables like...
<package>_FOUND # package found or not
<package>_INCLUDE_DIR # path to the libraries include directory
<package>_LIBRARY # name of the library
You still have to link in the library yourself:
target_link_libraries(${TARGET} ${<package>_LIBRARY})
For Boost, you can specify which libraries you are actually going to use:
set(BOOST_ROOT path/to/Boost) # boost root dir
find_package(Boost 1.47.0 COMPONENTS regex REQUIRED) # find the regex lib
...
include_directories(${Boost_INCLUDE_DIR}) # if you use Boost header only, this is all you need
…
target_link_libraries(${TARGET} ${Boost_REGEX_LIBRARY}) # link in the regex lib from boost.
Daniel
On Oct 29, 2011, at 4:11 AM, Dan Kegel wrote:
> I'm slowly learning cmake and converting some real software to it,
> targeting Linux, Windows, and Mac OS X.
> Along the way, I'm making minimal working examples (they're a lot
> easier to debug them than the real thing) and putting them up at
> http://code.google.com/p/winezeug/source/browse/#svn/trunk/cmake_examples
>
> Today, I wrote an example that uses a single function from boost. It's at
> http://code.google.com/p/winezeug/source/browse/#svn%2Ftrunk%2Fcmake_examples%2Fex4
>
> For Linux, demo.sh builds and runs the example, assuming you've
> installed everything needed with apt-get.
> For Windows (or Linux with Wine), demo.bat builds and runs the
> example, assuming you've installed visual c++ 2005 express, the win 7
> platform sdk, and boostpro.com's pre-build boost (the whole thing,
> don't skip any libraries, or you may be mystified why things don't
> link, like I was). It sets BOOST_ROOT so find_package can find
> boost.
>
> And now the question.
> I needed to put $BOOST_ROOT/lib into the LIB environment variable by
> hand (well, by running
> http://code.google.com/p/winezeug/source/browse/trunk/cmake_examples/settings.bat
> ).
> If I leave it out, I get the error
> LINK : fatal error LNK1104: cannot open file
> 'libboost_date_time-vc80-mt-gd-1_47.lib'
> when bulding on Windows.
> Shouldn't find_package have taken care of that?
> --
>
> 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
More information about the CMake
mailing list