2010-01-16 15 views
5

Ich bin relativ neu zu cMake, und ich versuche, die Boost Asio-Bibliothek in meinem Projekt zu verwenden.Verwenden von boost.asio in cMake

konnte ich cAchten bekommen, um andere Boost-Bibliotheken wie smart_ptr und lexical_cast, aber ich bekomme einen Linker Fehler zu finden, wenn ich versuche zu schließen boost/asio.hpp: mein CMakeLists.txt

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

Ich versuchte dann zu ändern von

find_package(Boost 1.40.0 REQUIRED) 

zu

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio) 

cAchten dann als ks für Boost_ASIO_LIBRARY_DEBUG und Boost_ASIO_LIBRARY_RELEASE. Gehe ich den richtigen Weg, und wenn ja, wo soll ich cMake zeigen, um diese Bibliotheken zu finden. (Ich verwende cAchten 2.6 und boost 1.40.0)

Antwort

8

Nach dem ASIO documentation:

Folgende Bibliotheken zur Verfügung stehen müssen, um Programme zu verknüpfen, die Boost.Asio verwenden:

  • Boost.System für die Klassen boost :: system :: error_code und boost :: system :: system_error.
  • Boost.Regex (optional), wenn Sie eine der Überladungen read_until() oder async_read_until() verwenden, die einen boost :: regex-Parameter verwenden.
  • OpenSSL (optional), wenn Sie die SSL-Unterstützung von Boost.Asio verwenden.

Wenn Sie Ihren Link Fehler betrachten, werden Sie sehen, dass es für die Boost.System Bibliothek sucht. Ich würde versuchen, Ihre CMakLists.txt Wechsel zu lesen:

find_package(Boost 1.40.0 REQUIRED system) 
+1

Und natürlich müssen Sie auch target_link_libraries hinzufügen (YourExecutable $ {Boost_LIBRARIES}) –