2010-01-16 20 views
5

Soy relativamente nuevo en cMake, y estoy intentando usar la biblioteca boost asio en mi proyecto.Uso de boost.asio en cMake

que era capaz de conseguir cAsegúrese encontrar otras bibliotecas Boost como smart_ptr y lexical_cast, pero me da un error de vinculador cuando intento para incluir boost/asio.hpp:

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

que luego trató de cambiar mi CMakeLists.txt de

find_package(Boost 1.40.0 REQUIRED) 

a

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio) 

cAsegúrese entonces como ks para Boost_ASIO_LIBRARY_DEBUG y Boost_ASIO_LIBRARY_RELEASE. ¿Estoy haciendo esto de la manera correcta? De ser así, ¿dónde debería señalar cMake para encontrar estas bibliotecas? (Estoy usando cAsegúrese 2.6 y 1.40.0 impulso)

Respuesta

8

De acuerdo con el ASIO documentation:

Las siguientes bibliotecas deben estar disponibles con el fin de vincular los programas que utilizan Boost.Asio:

  • Boost.System para las clases boost :: system :: error_code y boost :: system :: system_error.
  • Boost.Regex (opcional) si usa cualquiera de las sobrecargas read_until() o async_read_until() que toman un parámetro boost :: regex.
  • OpenSSL (opcional) si usa la compatibilidad con SSL de Boost.Asio.

Si nos fijamos en el error de enlace, verá que está en busca de la biblioteca Boost.System. Me gustaría tratar de cambiar su CMakLists.txt para leer:

find_package(Boost 1.40.0 REQUIRED system) 
+1

Y, por supuesto, también hay que añadir target_link_libraries (YourExecutable $ {} Boost_LIBRARIES) –