CMake配置OpenCV 时静态链接与动态链接的选择

本文介绍如何通过取消勾选OpenCV_STATIC选项,在使用cmake进行配置时选择动态库而非静态库的方法。

方法:

添加OpenCV_STATIC 选项,设置为不勾选,在cmake配置的时候就会选择动态库

否则,cmake 配置的时候会设置为静态库


      

使用 CMake 编译 OpenCV ,可以通过配置构建类型来生成动态链接库(`.so`)或静态链接库(`.a`)。以下步骤详细说明了如何实现这一目标,并展示如何在项目中使用这些库。 ### 配置并编译 OpenCV 生成动态链接库和静态链接OpenCV 是一个开源的计算机视觉库,通常通过源码构建。可以使用 CMake 来控制构建过程,并选择生成动态库或静态库。 1. **下载 OpenCV 源代码** 可以从 [OpenCV GitHub 仓库](https://github.com/opencv/opencv) 下载源码包。 2. **创建构建目录并运行 CMake** ```bash mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D BUILD_SHARED_LIBS=ON \ # 设置为 ON 表示构建动态链接库 .. ``` 如果希望生成静态链接库,则将 `BUILD_SHARED_LIBS=OFF`[^1]。 3. **编译并安装** ```bash make -j4 # 根据 CPU 核心数调整线程数量 sudo make install ``` 默认情况下,生成的库文件会位于 `/usr/local/lib`,头文件位于 `/usr/local/include/opencv4`。 ### 在项目中使用 OpenCV 库 在自己的项目中使用 OpenCV,需要编写 `CMakeLists.txt` 文件以正确链接库文件。 #### 示例:使用 OpenCV 动态链接库的项目结构 ``` my_project/ ├── CMakeLists.txt ├── src/ │ └── main.cpp └── include/ └── my_header.h ``` #### CMakeLists.txt 示例内容 ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) # 查找 OpenCV 包 find_package(OpenCV REQUIRED) # 添加可执行文件 add_executable(my_app src/main.cpp) # 链接 OpenCV 库 target_link_libraries(my_app PRIVATE ${OpenCV_LIBS}) ``` 如果使用的是自定义安装路径下的 OpenCV(例如 `~/local/lib`),则需要设置环境变量或修改 `/etc/ld.so.conf.d/` 中的配置,然后运行 `sudo ldconfig` 以确保系统能够找到 `.so` 文件[^2]。 #### 示例代码:main.cpp ```cpp #include <opencv2/opencv.hpp> #include <iostream> int main() { cv::Mat image = cv::imread("test.jpg"); if (image.empty()) { std::cout << "Could not open or find the image" << std::endl; return -1; } cv::namedWindow("Display Image", cv::WINDOW_AUTOSIZE); cv::imshow("Display Image", image); cv::waitKey(0); return 0; } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值