C++ 如何使用CMake在ubuntu上找到已安装的Boost库?

C++ 如何使用CMake在ubuntu上找到已安装的Boost库?,c++,linux,boost,cmake,C++,Linux,Boost,Cmake,我已经使用这个命令安装了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::

我已经使用这个命令安装了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;
}
CMake工作正常,但在使用make启动后,我出现了一些错误:

main.cpp:(.text+0x11f): undefined reference to `boost::system::generic_category()'
如何正确地将boost包含在我的CMakeLists.txt中,以便cmake能够找到库

main.cpp:(.text+0x11f): undefined reference to `boost::system::generic_category()'
它在链接步骤失败。您没有链接到系统库。你需要这样做


关于CMake使用boost,您没有遇到任何错误。您只需要告诉它系统需要链接。

您需要链接boost库。FindBoost为此提供变量
Boost\u库

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

有关详细信息,请参阅。最后有一个例子。

要补充前面的答案,请列出需要链接的Boost Libraries列表。(从增压1.65开始)


只需包含标题即可使用所有其他boost Libraries。

确保您的CMake版本足够新:
add_executable(main main.cpp)
target_link_libraries(main ${Boost_LIBRARIES})