Ubuntu下CMake可识别Boost但找不到boost_core组件的技术求助
解决CMake无法识别boost_core组件且正确使用boost/iterator的配置方案
首先得明确一个关键点:boost_core和boost/iterator都是纯头文件库,它们没有对应的编译后二进制库(比如.so或.a文件),而CMake的find_package(Boost REQUIRED COMPONENTS ...)语法默认是用来查找需要链接的二进制组件的,所以你指定core的时候会报错找不到——因为根本不存在对应的二进制库文件。
针对你的需求(只使用boost/iterator),正确的CMake配置应该这么写:
cmake_minimum_required(VERSION 3.10) project(test_boost_iterator) set(CMAKE_CXX_STANDARD 11) # 不需要指定COMPONENTS,因为需要的都是纯头文件库 find_package(Boost REQUIRED) # 引入Boost的头文件目录 include_directories(${Boost_INCLUDE_DIRS}) # 添加你的可执行文件(替换成你的实际源文件名) add_executable(test_boost_iterator main.cpp) # 注意:纯头文件库无需链接二进制库,所以不需要target_link_libraries语句
补充说明:
- 如果之后你需要用到Boost中需要链接的二进制组件(比如
boost_system、boost_thread这类),才需要在find_package中通过COMPONENTS指定,示例如下:find_package(Boost REQUIRED COMPONENTS system thread) # 此时需要链接对应的库文件 target_link_libraries(test_boost_iterator ${Boost_LIBRARIES}) - 你之前的报错根源就是把纯头文件组件当成需要链接的二进制组件来指定,CMake自然找不到对应的库文件。
内容的提问来源于stack exchange,提问作者R zu
相关产品推荐
相关产品推荐

