[Dune] Problem linking boost with cmake
Markus Blatt
markus at dr-blatt.de
Mon Dec 1 10:50:30 CET 2014
Hi,
On Mon, Dec 01, 2014 at 10:04:30AM +0100, Aleksejs Fomins wrote:
> I am sorry to post on a very similar issue that was already largely
> discussed, but I can't make it work by using the previous suggestions.
>
> I have:
> * Specified boost libraries in the opts file
> * written find_package(Boost 1.55.0 COMPONENTS system) in the cmake
> macros file
> * written target_link_libraries(curvilineargmshtest ${Boost_LIBRARIES})
> in the CMakeLists.txt file.
>
> The boost library is found by dunecontrol, but no flags are passed to
> the compilation of the target.
>
> I appreciate your suggestions,
> build directory: build-cmake
> make
> [ 50%] Built target dune_curvilineargrid
> [100%] Building CXX object dune/curvilineargrid/io/file/test/CMakeFiles/curvilineargmshtest.dir/curvilineargmshtest.cc.o
> In file included from /home/fomins/gitwork/hades-github-lspr-ag/dune-curvilineargrid/dune/curvilineargrid/io/file/curvilineargmshreader.hh:44:0,
> from /home/fomins/gitwork/hades-github-lspr-ag/dune-curvilineargrid/dune/curvilineargrid/io/file/test/curvilineargmshtest.cc:43:
> /home/fomins/gitwork/hades-github-lspr-ag/dune-curvilineargrid/dune/curvilineargrid/feedback/loggingmessage.hh:16:53: fatal error: boost/date_time/posix_time/posix_time.hpp: No such file or directory
> #include <boost/date_time/posix_time/posix_time.hpp>
> ^
> compilation terminated.
> make[2]: *** [dune/curvilineargrid/io/file/test/CMakeFiles/curvilineargmshtest.dir/curvilineargmshtest.cc.o] Error 1
> make[1]: *** [dune/curvilineargrid/io/file/test/CMakeFiles/curvilineargmshtest.dir/all] Error 2
> make: *** [all] Error 2
As you can see from the error message a boost header is not
found. Which means that an include path is missing. You can see how to
specify by using CMake's documentation, e.g. "cmake --help-module FindBoost":
cmake version 2.8.9
FindBoost
Try to find Boost include dirs and libraries
Usage of this module as follows:
NOTE: Take note of the Boost_ADDITIONAL_VERSIONS variable
below. Due
to Boost naming conventions and limitations in CMake this find
module
is NOT future safe with respect to Boost version numbers, and
may
break.
== Using Header-Only libraries from within Boost: ==
find_package( Boost 1.36.0 )
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo foo.cc)
endif()
== Using actual libraries from within Boost: ==
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package( Boost 1.36.0 COMPONENTS date_time filesystem
system ... )
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo foo.cc)
target_link_libraries(foo ${Boost_LIBRARIES})
endif()
...
So you have to add the include directory as above.
Markus
--
Do you need more support with DUNE or HPC in general?
Dr. Markus Blatt - HPC-Simulation-Software & Services http://www.dr-blatt.de
Hans-Bunte-Str. 8-10, 69123 Heidelberg, Germany
Tel.: +49 (0) 160 97590858
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20141201/db11e05e/attachment.sig>
More information about the Dune
mailing list