macOS Big Sur下CMake编译时报boost/multi_array.hpp未找到问题
macOS Big Sur下CMake构建找不到boost/multi_array.hpp的解决方案
核心问题原因
你当前的CMakeLists.txt存在两处配置错误,同时macOS brew安装的软件路径默认可能不在CMake的搜索范围内,共同导致头文件找不到:
- 调用
FIND_PACKAGE(Boost)获取到头文件路径后,没有将路径加入全局头文件搜索目录 - 误用了不存在的变量
${Boost_INCLUDES},FindBoost模块返回的标准头文件路径变量为${Boost_INCLUDE_DIRS}
具体修复步骤
- 修正Boost头文件引入配置
找到CMakeLists.txt中Boost相关的配置段,在FIND_PACKAGE语句后添加头文件目录引入代码,修改后对应段代码如下:FIND_PACKAGE(Boost COMPONENTS filesystem program_options timer chrono REQUIRED) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) # 新增这行 SET(EXTERNAL_LIBRARIES ${Boost_LIBRARIES}) - 执行cmake命令时指定brew安装的Boost路径
根据你的芯片架构选择对应命令,避免CMake找不到brew安装的Boost:- Intel芯片Mac:
cmake .. -DBOOST_ROOT=/usr/local/opt/boost - Apple Silicon芯片Mac:
cmake .. -DBOOST_ROOT=/opt/homebrew/opt/boost
- Intel芯片Mac:
- 清理旧构建缓存后重新编译
每次修改CMake配置后,需删除build目录下的所有缓存文件,再重新执行cmake和make命令,避免旧缓存干扰配置生效。 - 可选:验证编译链头文件搜索路径
你的CMakeLists.txt中硬编码了SET(CMAKE_CXX_COMPILER "g++"),macOS默认的g++实际为clang的别名,若你单独安装了gcc可执行以下命令验证路径:- 执行
which g++确认当前使用的g++路径 - 执行
g++ -E -x c++ - -v < /dev/null查看默认头文件搜索列表,确认Boost安装路径是否在列表中
- 执行
内容的提问来源于stack exchange,提问作者user8499104
相关产品推荐
相关产品推荐

