#c #ubuntu #boost #makefile
Вопрос:
Я использую виртуальную машину Ubuntu и сталкиваюсь со следующим сообщением об ошибке при выполнении команды «сделать»:
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
Я запустил cmake прямо перед make, и cmake смог найти Boost; Я также вижу, что файл multi_array.hpp находится в папке /home/ben/AI/boost_1_77_0/boost, поэтому я не уверен, почему make не может найти файл. Я пробовал добавлять изменения линии target_link_libraries(program ${Boost_LIBRARIES})
в CMakeLists.txt файл и с помощью вариации -л/-ль варианты, сделать вызов, и ни один из методов не работал (хотя я не был уверен, что имя программы для использования с target_link_libraries поэтому я перепробовала кучу догадок, но, возможно, я не использовал правильный; я пытаюсь построить ИИ-инструментов, если это помогает).
Мне также нужно добавить несколько опций в команду 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})
У кого-нибудь есть какие-либо идеи о том, как я могу преодолеть ошибку «Сделать»?
Комментарии:
1. Вы проверили
-I
, где должен быть путь повышения ?2. Я попытался позвонить
make -I /home/ben/AI/boost_1_77_0/boost
(как с последнейboost
папкой, так и без нее), но получил ту же ошибку. Ты это имел в виду или имел в виду что-то другое?3. Чтобы получить его, вам нужно будет проверить собственные файлы makefile, созданные cmake.
-DBOOST_ROOT=/home/ben/AI/boost_1_77_0
также отсутствует последнийboost
каталог4. Добавление
-I
в командную строку make не сработает. Это указывает make, где искать включенные файлы make (которые вам не нужны). Он не сообщает вашему компилятору, где искать включенные файлы заголовков C .5. В итоге я решил эту проблему, удалив папку Boost и переустановив ее с помощью команды
sudo apt-get install libboost-all-dev
; Я просто перезапустил cmake и удалил все параметры, которые использовал, за исключением lpsolve, а затем, когда я запустил make, я не столкнулся с проблемами. Спасибо за помощь!
Ответ №1:
В итоге я решил эту проблему, удалив свою папку Boost и переустановив ее с помощью команды sudo apt-get install libboost-all-dev
; Я просто перезапустил cmake и удалил все параметры, которые я использовал, за исключением lpsolve, а затем, когда я запустил make, я не столкнулся с проблемами.