Использование boost.asio в cMake - PullRequest
5 голосов
/ 16 января 2010

Я относительно новичок в cMake и пытаюсь использовать библиотеку boost asio в своем проекте.

Мне удалось заставить cMake найти другие библиотеки буста, такие как smart_ptr и lexical_cast, но я получаю ошибку компоновщика при попытке включить boost/asio.hpp:

LINK : fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-1_40.lib'.  

Затем я попытался изменить свой CMakeLists.txt с

find_package(Boost 1.40.0 REQUIRED)

до

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio)

cMake затем запрашивает Boost_ASIO_LIBRARY_DEBUG и Boost_ASIO_LIBRARY_RELEASE. Правильно ли я иду по этому пути, и если да, то куда мне направить cMake, чтобы найти эти библиотеки. (Я использую cMake 2.6 и boost 1.40.0)

1 Ответ

9 голосов
/ 18 января 2010

Согласно документации ASIO :

Для связи программ, использующих Boost.Asio, должны быть доступны следующие библиотеки:

  • Boost.System для классов boost :: system :: error_code и boost :: system :: system_error.
  • Boost.Regex (необязательно), если вы используете какие-либо перегрузки read_until () или async_read_until (), которые принимают параметр boost :: regex.
  • OpenSSL (необязательно), если вы используете поддержку SSL Boost.Asio.

Если вы посмотрите на ошибку вашей ссылки, вы увидите, что она ищет библиотеку Boost.System. Я бы попробовал изменить ваш CMakLists.txt так:

find_package(Boost 1.40.0 REQUIRED system)
...