2017-08-02 24 views
0

私はMinGWを使ってWindows上でプロジェクトを構築しようとしていますが、CMakeはBoostライブラリv1.60.0を使用しています。私はCMakeのを経由して自分のアプリケーションをビルドするとき、私はこのようにそれを行う今CMake Boost静的ライブラリ未定義参照boost :: chrono :: steady_clock :: now()

cd <boost_root>\tools\build 
bootstrap.bat gcc 
cd ..\.. 
tools\build\b2.exe --prefix=<boost_install_root> toolset=gcc link=static 

add_executable(myApp ... .cpp sources ...) 
target_include_directories(myApp <myApp include directory> ${Boost_INCLUDE_DIRS}) 
target_link_libraries(myApp ${Boost_LIBRARIES}) 

と私はすべてのとほぼ同じいくつかのエラーを取得する私は正常以下でMinGWのでブーストを構築することができました:

<boost_install_root>/lib/libboost_timer-mgw53-mt-1_60.a(cpu_timer.o):cpu_ timer.cpp:(.text+0x25a): undefined reference to `boost::chrono::steady_clock::now()' 

ライブラリがすべてあるとCMakeの中から私が言うことができるものから表示されているので、私は何をしないのですか?リンクは、ライブラリの順序は重要であり、適切に機能するために

+0

あなたのブーストコンポーネントのリストには、 'find_package(ブースト1.60.0必須コンポーネントクロノ)'というクロノライブラリがありますか? – utopia

+0

はい、私はこの 'find_packagesを使用します(ブースト1.60.0必要なコンポーネントファイルシステムシステムスレッドdate_time regexクロノタイマーOPTIONAL_COMPONENTSログlog_setup' – MrJman006

+0

あなたのCMakeは最近ですか? – usr1234567

答えて

0

答えに私の以前のコメントを再フォーマットします。 Boostタイマーライブラリはchronoライブラリの機能に依存するため、find_package呼び出しでライブラリの順序を変更する必要があります。

私はBoostライブラリのすべての相互依存関係を提供するWebページは認識していませんが、bcpが出発点になる可能性があります。

関連する問題