cmake 安装_听说你安装测试 OpenCV 总是不成功?你可能遇到这个find_package坑了!...
时间: 2023-08-04 12:06:40 浏览: 51
是的,确实有可能会遇到这个问题。在使用 CMake 构建项目时,使用 `find_package` 命令来查找依赖库。然而,如果这个命令不能正确找到所需的库,那么就会导致构建失败。
一种常见的情况是,CMake 可以找到库的头文件和库文件,但是在链接时出现错误。这可能是因为库文件的版本与头文件不匹配,或者是因为您的项目链接方式不正确。
解决此问题的方法是使用 `find_package` 命令的选项来指定您要查找的库的确切版本和链接方式。例如,您可以使用以下命令来查找 OpenCV 4.x 版本,并使用 `pkg-config` 进行链接:
```
find_package(OpenCV 4 REQUIRED COMPONENTS core highgui imgproc)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
target_link_libraries(your_target ${OpenCV_LIBRARIES})
```
请注意,您需要将 `your_target` 替换为您的项目名称,并确保将上述代码添加到您的 CMakeLists.txt 文件中。
希望这可以帮助您解决 OpenCV 安装和链接的问题!
相关问题
cmake install_Ubuntu16.04非root用户安装OpenCV4并使用g++/CMake编译
在非root用户下安装OpenCV4并使用g++/CMake编译,可以按照以下步骤进行操作:
1. 安装必要的依赖项
```
sudo apt-get update
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
```
2. 下载OpenCV4源代码
```
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.0.0
```
3. 创建一个build目录并进行编译
```
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/opencv_install -DCMAKE_BUILD_TYPE=Release ..
make -j8
make install
```
其中,`$HOME/opencv_install` 是你想要安装OpenCV4的路径。
4. 配置环境变量
将以下内容添加到你的`.bashrc`文件中:
```
export PKG_CONFIG_PATH=$HOME/opencv_install/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$HOME/opencv_install/lib:$LD_LIBRARY_PATH
```
然后执行以下命令使其生效:
```
source ~/.bashrc
```
5. 编写CMakeLists.txt并进行编译
在你的项目目录中创建一个 `CMakeLists.txt` 文件,并在其中添加以下内容:
```
cmake_minimum_required(VERSION 2.8)
project(your_project_name)
find_package(OpenCV REQUIRED)
add_executable(your_executable_name your_source_files.cpp)
target_link_libraries(your_executable_name ${OpenCV_LIBS})
```
将 `your_project_name` 和 `your_executable_name` 分别替换为你的项目名和可执行文件名。
然后在项目目录下创建一个 `build` 目录,并在其中进行编译:
```
mkdir build
cd build
cmake ..
make
```
编译完成后,你的可执行文件将位于 `build` 目录下。
以上就是在非root用户下安装OpenCV4并使用g++/CMake编译的步骤。
CMake Error at CMakeLists.txt:9 (find_package): By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenCV", but CMake did not find one.
这个错误是因为 CMake 在查找 OpenCV 时找不到对应的 `FindOpenCV.cmake` 文件,需要将该文件添加到 CMake 的模块路径中。
你可以尝试以下方法来解决这个问题:
1. 确认 OpenCV 是否已经正确安装并配置好了环境变量,如果没有安装,可以先下载并安装 OpenCV。
2. 将 `FindOpenCV.cmake` 文件复制到 CMake 的模块路径中。该文件通常位于 OpenCV 安装目录下的 `share/OpenCV` 目录中,可以将其复制到系统的 CMake 模块路径中,通常是 `/usr/share/cmake/Modules` 目录,或者将其复制到项目的根目录下。
3. 在项目的 `CMakeLists.txt` 文件中添加以下语句,将刚才复制的 `FindOpenCV.cmake` 文件所在的目录添加到 CMake 的模块路径中:
```
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /path/to/FindOpenCV.cmake)
```
其中 `/path/to/FindOpenCV.cmake` 为 `FindOpenCV.cmake` 文件所在的路径。
4. 在 `CMakeLists.txt` 文件中添加以下语句,告诉 CMake 查找和链接 OpenCV 库:
```
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(your_target ${OpenCV_LIBS})
```
其中 `your_target` 是你的项目名,`OpenCV_INCLUDE_DIRS` 和 `OpenCV_LIBS` 是 CMake 查找到的 OpenCV 库的路径和库文件名。