2016-10-24 9 views
1

今、私のプログラムにいくつかのライブラリを含めるには" find_package(Boost 1.62.0 COMPONENTS program_options serialization system filesystem thread REQUIRED)"を使う必要があります。 defualtディレクトリ**(usr/include ..)**。今では、次のエラーを発生します。find_packageを使ってBoost(usr/includeではない)をCMakeList.txtにリンクするには

CMake Error at /usr/share/cmake/Modules/FindBoost.cmake:1138 (message): 
    Unable to find the requested Boost libraries. 
    Boost version: 1.41.0 
    Boost include path: /usr/includ 
    Detected version of Boost is too old.  
    Requested version was 1.62 (or 
    newer). 

私は私のCMakelist.txtの内容の一部を配る:

SET(BOOST_DIR /home/mingjli/folder_Mingjie/Software/boost_1.62.0/include/boost) 
SET(BOOST_LIB /home/mingjli/folder_Mingjie/Software/boost_1.62.0/lib) 
INCLUDE (${Source_Path}/IndexerLauncher.cmake NO_POLICY_SCOPE) 
INCLUDE_DIRECTORIES(${BOOST_DIR}) 
LINK_DIRECTORIES(${BOOST_LIB}) 
INCLUDE_DIRECTORIES(${Source_Path}) 
ADD_EXECUTABLE (indexer_launcher ${IndexerLauncher}) 
TARGET_LINK_LIBRARIES (indexer_launcher nearest_search_lib) 
target_link_libraries(indexer_launcher ${Boost_LIBRARIES}) 

ありがとうございました!!

答えて

1
Boost version: 1.41.0 
       ^^ 

これは、ブーストバージョン1.41.0がインストールされているが、1.62.0を要求していることを意味します。ブーストをアップデートしたり、最小ブーストバージョンの要件を変更したりすることができます。ブーストを含めるにはCMakeLists.txtに特別なことは何もありません。ここでは私の作品のサンプルは以下のとおりです。

cmake_minimum_required(VERSION 2.8) 
find_package(Boost REQUIRED filesystem system) 
include_directories(${Boost_INCLUDE_DIRS}) 
target_link_libraries(mytarget ${Boost_LIBRARIES}) 

UPDATE: 、あなたのシステムのブーストバージョンを更新できない場合は、あなたのホームフォルダにブーストをインストールすることができます。

  1. ダウンロードブースト源www.boost.org
  2. コンパイルからと自分のホームディレクトリに新しいブーストをインストールします。

    b2 toolset=gcc install --prefix=/home/user/boost

ブーストがコンパイルされた後 - あなたが家/ユーザー/ブースト/からそれを使用することができます。

cmake .. -DBOOST_ROOT=/home/user/boost 
+0

こんにちは、私はあなたが何を意味するか知っています。しかし、私はブースト1.62ではなくブースト1.41を必要とします。残念ながら、私は昇格1.41を1.62に更新する許可はありませんが、これは問題です。 @Evgeniy –

+0

@ MingjieLi、あなたはあなたのホームフォルダに新しいブーストをインストールすることができます。回答の更新を確認する – Evgeniy

+0

こんにちは、@ Evgeniy、ありがとう、大丈夫です。しかし、新しい問題が発生します。 'missing_parameter'は 'boost :: program_options :: invalid_syntax'のメンバーではありません。私はinvalid_syntaxが実際にメンバー "missing_parameter"を含んでいることを確認しました。 –

関連する問題