2017-08-28 13 views
1

は私がCMakeを使ってubuntuにインストールされたBoostライブラリを見つける方法はありますか?

sudo apt-get install libboost-all-dev 

このコマンドを使用してブーストをインストールしていると私はmain.cppに

#include <iostream> 
#include <boost/asio.hpp> 
#include <boost/date_time/posix_time/posix_time.hpp> 

int main() 
{ 
    boost::asio::io_service io; 

    boost::asio::deadline_timer t(io, boost::posix_time::seconds(5)); 
    t.wait(); 

    std::cout << "Hello, world!" << std::endl; 

    return 0; 
} 

にこの簡単な例を書いて、私のCMakeLists.txtに、私はこの持っている:

cmake_minimum_required(VERSION 2.8) 

find_package(Boost REQUIRED) 
if(NOT Boost_FOUND) 
    message(SEND_ERROR "Failed to find Boost") 
    return() 
else() 
    include_directories(${Boost_INCLUDE_DIR}) 
endif() 

add_executable(main main.cpp) 

CMakeは正常に動作しましたが、makeで起動した後にいくつかのエラーが発生しました:

main.cpp:(.text+0x11f): undefined reference to `boost::system::generic_category()' 

正しくCMakeがライブラリを見つけるように私のCMakeLists.txtにboostを入れる方法は?

+0

CMakeのバージョンが最新のものであることを確認してください:https://stackoverflow.com/a/42124857/2799037 – usr1234567

答えて

0
main.cpp:(.text+0x11f): undefined reference to `boost::system::generic_category()' 

リンクステップで失敗しています。あなたはシステムライブラリにリンクしていません。あなたはそれをする必要があります。

ブーストを使用するCMakeに関して、あなたはエラーに遭遇していません。システムをリンクする必要があることだけを伝える必要があります。

1

ブーストライブラリとリンクする必要があります。 FindBoostはこのために、変数Boost_LIBRARIESを提供しています。

add_executable(main main.cpp) 
target_link_libraries(main ${Boost_LIBRARIES}) 

詳細については、the FindBoost documentationを参照してください。最後の例があります。

0

前の回答に追加するには、hereがリンクする必要があるBoostライブラリのリストです。 (ブースト1.65以降)

その他のブースト・ライブラリは、単にヘッダを含むだけで使用できます。

関連する問題