2010-01-16 8 views
5

Je suis relativement nouveau à cMake, et j'essaie d'utiliser la bibliothèque boost asio dans mon projet.Utiliser boost.asio dans cMake

j'ai pu obtenir cVérifiez pour trouver d'autres bibliothèques Boost telles que smart_ptr et lexical_cast, mais je reçois une erreur de linker lorsque je tente d'inclure boost/asio.hpp:

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

J'ai ensuite essayé de changer mon CMakeLists.txt de

find_package(Boost 1.40.0 REQUIRED) 

à

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio) 

cVérifiez alors que ks pour Boost_ASIO_LIBRARY_DEBUG et Boost_ASIO_LIBRARY_RELEASE. Est-ce que je vais à ce sujet de la bonne façon, et si oui, où dois-je pointer cMake pour trouver ces bibliothèques. (J'utilise cVérifiez 2.6 et boost 1.40.0)

Répondre

8

Selon l'ASIO documentation:

Les bibliothèques suivantes doivent être disponibles afin de relier les programmes qui utilisent Boost.Asio:

  • Boost.System pour les classes boost :: system :: error_code et boost :: system :: system_error.
  • Boost.Regex (facultatif) si vous utilisez l'une des surcharges read_until() ou async_read_until() qui prennent un paramètre boost :: regex.
  • OpenSSL (facultatif) si vous utilisez le support SSL de Boost.Asio.

Si vous regardez votre erreur de lien, vous verrez qu'il est à la recherche de la bibliothèque Boost.System. Je voudrais essayer de changer votre CMakLists.txt lire:

find_package(Boost 1.40.0 REQUIRED system) 
+1

Et bien sûr, vous devez également ajouter TARGET_LINK_LIBRARIES (YourExecutable $ {} Boost_LIBRARIES) –