为什么 gcc 找不到 opencv.hpp 文件?
Why does gcc can't find opencv.hpp file?
我对 CMake 很陌生,但我想构建一个测试 .cpp
文件,其中包含 OpenCV 和给我看一张图片。我在路径 /usr/local
中构建了 OpenCV 并且我在此处的文件夹中包含 opencv.hpp 文件 - /usr/local/include/opencv4/opencv2/opencv.hpp
.这是我的 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 3.0)
project(cpp_proj)
find_package(OpenCV REQUIRED)
add_executable(cpp_proj opencv_cpp.cpp)
include_directories(${OPENCV4_INCLUDES})
target_link_libraries(cpp_proj )
我打开 ~./bashrc
并添加了行:
export OPENCV4_INCLUDES=/usr/local/include/
export OPENCV4_LIBRARIES=/usr/local/lib/
export PATH=$PATH:$OPENCV4_LIBRARIES
export PATH=$PATH:$OPENCV4_INCLUDES
当我 运行 cmake
在 bash - 一切正常甚至 find_package 找到 OpenCV。但是当我尝试 运行 make
它给了我一个错误:
pi@raspberrypi:~/Desktop/cpp_proj/build $ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/Desktop/cpp_proj/build
pi@raspberrypi:~/Desktop/cpp_proj/build $ make
[ 50%] Building CXX object CMakeFiles/cpp_proj.dir/opencv_cpp.cpp.o
/home/pi/Desktop/cpp_proj/opencv_cpp.cpp:1:10: fatal error: opencv2/opencv.hpp: No such file or directory
#include <opencv2/opencv.hpp>
^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/cpp_proj.dir/build.make:63: CMakeFiles/cpp_proj.dir/opencv_cpp.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/cpp_proj.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
我发现了同样问题的问题,但他们没有帮助我。我做错了什么?这可能是什么原因?谢谢!
为了使用库,您必须指定包含目录和库。
使用 find_package(在模块模式下),在您的情况下,它应该填充变量 OpenCV_INCLUDE_DIRS 和 OpenCV_LIBS 供您使用。
所以我建议添加/更改您的代码以添加包含目录和 link 库(如下所示)
target_include_directories(${CMAKE_PROJECT_NAME} public ${OpenCV_INCLUDE_DIRS})
target_link_libraries(${CMAKE_PROJECT_NAME} public ${OpenCV_LIBS})
我认为您在使用 find_package
时不需要触摸 ~./bashrc
我对 CMake 很陌生,但我想构建一个测试 .cpp
文件,其中包含 OpenCV 和给我看一张图片。我在路径 /usr/local
中构建了 OpenCV 并且我在此处的文件夹中包含 opencv.hpp 文件 - /usr/local/include/opencv4/opencv2/opencv.hpp
.这是我的 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 3.0)
project(cpp_proj)
find_package(OpenCV REQUIRED)
add_executable(cpp_proj opencv_cpp.cpp)
include_directories(${OPENCV4_INCLUDES})
target_link_libraries(cpp_proj )
我打开 ~./bashrc
并添加了行:
export OPENCV4_INCLUDES=/usr/local/include/
export OPENCV4_LIBRARIES=/usr/local/lib/
export PATH=$PATH:$OPENCV4_LIBRARIES
export PATH=$PATH:$OPENCV4_INCLUDES
当我 运行 cmake
在 bash - 一切正常甚至 find_package 找到 OpenCV。但是当我尝试 运行 make
它给了我一个错误:
pi@raspberrypi:~/Desktop/cpp_proj/build $ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/Desktop/cpp_proj/build
pi@raspberrypi:~/Desktop/cpp_proj/build $ make
[ 50%] Building CXX object CMakeFiles/cpp_proj.dir/opencv_cpp.cpp.o
/home/pi/Desktop/cpp_proj/opencv_cpp.cpp:1:10: fatal error: opencv2/opencv.hpp: No such file or directory
#include <opencv2/opencv.hpp>
^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/cpp_proj.dir/build.make:63: CMakeFiles/cpp_proj.dir/opencv_cpp.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/cpp_proj.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
我发现了同样问题的问题,但他们没有帮助我。我做错了什么?这可能是什么原因?谢谢!
为了使用库,您必须指定包含目录和库。
使用 find_package(在模块模式下),在您的情况下,它应该填充变量 OpenCV_INCLUDE_DIRS 和 OpenCV_LIBS 供您使用。
所以我建议添加/更改您的代码以添加包含目录和 link 库(如下所示)
target_include_directories(${CMAKE_PROJECT_NAME} public ${OpenCV_INCLUDE_DIRS})
target_link_libraries(${CMAKE_PROJECT_NAME} public ${OpenCV_LIBS})
我认为您在使用 find_package
时不需要触摸 ~./bashrc