在用opencv时编辑CMakeLists.txt时添加下面一句
find_package( OpenCV 3.3 REQUIRED )
然后就会报下面的错误
CMake Error in CMakeLists.txt:
Imported target "opencv_calib3d" includes non-existent path
"/usr/local/include/opencv"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
然后解决方案,基本都是类似下面链接中给的方法
即在OpenCV的conf.cmake文件里面的一个配置。在/opt/ros/kinetic/share/OpenCV-3.1.0-dev/OpenCVConfig.cmake
里面的第144行和116行
# Extract the directory where *this* file has been installed (determined at cmake run-time)
if(CMAKE_VERSION VERSION_LESS "2.8.12")
get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH CACHE)
else()
get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY CACHE)
endif()
把其中的CACHE去掉,改成下面的样子
# Extract the directory where *this* file has been installed (determined at cmake run-time)
if(CMAKE_VERSION VERSION_LESS "2.8.12")
get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH)
else()
get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
endif()
但是我依然报错...
后来我找到opencv安装目录中的OpenCVConfig.cmake文件,发现有下面一行
set(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include" "${OpenCV_INSTALL_PATH}/include/opencv")
由于我的opencv install path是/usr/local,而OpenCV_INCLUDE_DIRS设置成后面的路径是找不到的。我把这句改成下面的句子
set(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}")
终于编译成功。。。