我正在尝试使用MinGW和CMake在Windows上构建一个使用Boost库v1.60.0的项目。我能够使用MinGW成功构建Boost,具体如下:
cd <boost_root>\tools\build
bootstrap.bat gcc
cd ..\..
tools\build\b2.exe --prefix=<boost_install_root> toolset=gcc link=static
现在当我通过CMake构建我的应用程序时,我这样做:
add_executable(myApp ... .cpp sources ...)
target_include_directories(myApp <myApp include directory> ${Boost_INCLUDE_DIRS})
target_link_libraries(myApp ${Boost_LIBRARIES})
我得到的几个错误几乎完全相同:
<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 :(得分:0)
将我以前的评论重新格式化为答案:
为了使链接正常工作,库的顺序很重要。由于Boost计时器库依赖于计时库的功能,因此您需要在find_package
调用中重新排序库。
我不知道有一个网页可以提供Boost库的所有相互依赖关系,但bcp可能是一个起点。