2010-01-16 10 views
5

Jestem stosunkowo nowy w cMake i próbuję użyć biblioteki boost asio w moim projekcie.Używanie boost.asio w cMake

udało mi się dostać CUpewnij znaleźć inne biblioteki Boost, takich jak smart_ptr i lexical_cast, ale pojawia się błąd linkera gdy próbuję to boost/asio.hpp:

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

Potem próbował zmienić CMakeLists.txt od

find_package(Boost 1.40.0 REQUIRED) 

do

find_package(Boost 1.40.0 REQUIRED COMPONENTS asio) 

cUpewnij następnie jako ks dla Boost_ASIO_LIBRARY_DEBUG i Boost_ASIO_LIBRARY_RELEASE. Czy podążam tą drogą we właściwy sposób, a jeśli tak, to gdzie powinienem wskazać cMake, aby znaleźć te biblioteki. (Używam CUpewnij 2.6 i impuls 1.40.0)

Odpowiedz

8

Według ASIO documentation:

Poniższe biblioteki muszą być dostępne w celu odwołuje programy korzystające Boost.Asio:

  • System Boost.Systemu boost :: system :: error_code i boost :: system :: system_error.
  • Boost.Regex (opcjonalnie) jeśli używasz jakiegokolwiek przeciążenia read_until() lub async_read_until(), które pobierają parametr :: :: regex.
  • OpenSSL (opcjonalnie), jeśli używasz wsparcia SSL Boost.Asio.

Jeśli spojrzeć na swój błąd łącza, widać, że szuka biblioteki Boost.System. Chciałbym zmienić plik CMakLists.txt na:

find_package(Boost 1.40.0 REQUIRED system) 
+1

Oczywiście musisz również dodać target_link_libraries (YourExecutable $ {Boost_LIBRARIES}) –