最近我已经学习了如何在CMake中使用find_package,我注意到它仅适用于预编译的库。
此行符合预期:
find_package(Boost COMPONENTS filesystem REQUIRED)
如果成功,我以后可以使用类似的东西
target_link_libraries(target Boost::filesystem)
使用接口可以非常轻松地链接Boost.Filesystem所需的所有必要依赖关系。但是对于像Boost.Asio这样的仅标头库也有类似的解决方案会很棒(我知道可以将其构建到单独的对象中,但出于示例目的,我会将其视为仅标头库)
find_package(Boost COMPONENTS asio REQUIRED)
target_link_libraries(target Boost::asio)
这将无法正常工作。
ASIO的实现要求我们在类似UNIX的系统上链接pthread
,因此我们可以说该库具有一个依赖项,即线程库。是否有任何便捷的解决方案以与CMake中的Boost.Filesystem相同的方式使用它?
答案 0 :(得分:1)
您可以使用<meta name="csrf-token" content="{{ csrf_token() }}">
作为目标,使用find_package
来查找仅标头的依赖项,请参见FindBoost,即:
Boost::boost
但是,您会发现find_package(Boost COMPONENTS boost REQUIRED)
if(Boost_FOUND)
target_include_directories(target ${Boost_INCLUDE_DIRS})
else()
message(STATUS "Boost NOT Found !")
endif(Boost_FOUND)
仅是标头,但它需要Boost::asio
。
因此,您需要:
Boost::system