Make 在 Boost 中找不到 .hpp 文件

Make can't find .hpp file in Boost

我正在使用 Ubuntu 虚拟机,在 运行 执行 'make' 命令时遇到以下错误消息:

Scanning dependencies of target AIToolboxMDP
[  1%] Building CXX object src/CMakeFiles/AIToolboxMDP.dir/Impl/Seeder.cpp.o
[  1%] Building CXX object src/CMakeFiles/AIToolboxMDP.dir/Impl/CassandraParser.cpp.o
In file included from /home/ben/AI/AI-Toolbox-master/include/AIToolbox/Impl/CassandraParser.hpp:4,
                 from /home/ben/AI/AI-Toolbox-master/src/Impl/CassandraParser.cpp:1:
/home/ben/AI/AI-Toolbox-master/include/AIToolbox/Types.hpp:7:10: fatal error: boost/multi_array.hpp: No such file or directory
    7 | #include <boost/multi_array.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/CMakeFiles/AIToolboxMDP.dir/build.make:76: src/CMakeFiles/AIToolboxMDP.dir/Impl/CassandraParser.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1140: src/CMakeFiles/AIToolboxMDP.dir/all] Error 2
make: *** [Makefile:95: all] Error 2

我运行在make之前cmake,cmake能够找到Boost;我还可以看到 multi_array.hpp 文件在文件夹 /home/ben/AI/boost_1_77_0/boost 中,所以我不确定为什么 make 找不到该文件。我尝试将 target_link_libraries(program ${Boost_LIBRARIES}) 行的变体添加到 CMakeLists.txt 文件中,并在 make 调用中使用 -L/-l 选项的变体,但两种方法都不起作用(尽管我不确定是哪个程序与 target_link_libraries 一起使用的名称,所以我尝试了一系列猜测,但也许我没有使用正确的猜测;如果有帮助,我正在尝试构建 AI-Toolbox。

我还必须在 make 之前向 cmake 命令添加几个选项 运行 以消除任何错误;这是我输入的内容,以防万一,或者我需要在其中添加其他内容:

cmake .. -DBOOST_ROOT=/home/ben/AI/boost_1_77_0 -DLPSOLVE_INCLUDE_PATH=/home/ben/AI/lpsolve -DVCPKG_TARGET_TRIPLET=x64-linux -DCMAKE_TOOLCHAIN_FILE=/home/ben/AI/vcpkg/scripts/buildsystems/vcpkg.cmake

我的 CMakeLists.txt 文件包含以下几行(除其他外,但这些似乎是最相关的)以防万一也有帮助:

find_package(Boost ${BOOST_VERSION_REQUIRED} REQUIRED)
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})

有人知道我如何克服 make 错误吗?

我最终通过删除我的 Boost 文件夹并使用命令 sudo apt-get install libboost-all-dev 重新安装来解决了这个问题;我只是重新 运行 cmake 并取出了我一直使用的所有选项,除了 lpsolve 一个,然后当我 运行 make 之后我没有遇到任何问题。