赞
踩
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
提高效率:使用第三方库可以加速开发过程,因为你不需要从头开始编写所有功能。第三方库通常提供了已经实现并经过测试的功能,你可以直接调用这些功能,而不必重复造轮子。
扩展功能:第三方库通常提供了各种功能和工具,可以帮助你扩展你的应用程序的功能,如图形界面库、数据处理库、网络库等。通过使用这些库,你可以轻松地为你的应用程序添加新的功能。
提高质量:许多知名的第三方库经过了广泛的测试和使用,因此它们通常具有较高的质量和可靠性。通过使用这些经过验证的库,你可以提高你的应用程序的质量,减少错误和漏洞的可能性。
节省成本:使用现有的第三方库可以节省开发成本,因为你不需要为了实现某些功能而花费大量时间和精力。相比之下,自行开发可能需要更多的资源和时间。
社区支持:许多第三方库有着活跃的社区支持,你可以在社区中获取帮助、分享经验,并且从其他开发者的贡献中受益。这种支持可以帮助你更快地解决问题,并且学习到新的技能和最佳实践。
1)安装CMake教程如下所示。
Windows下配置CMake(入门级教程,适合新人收藏学习)_window cmake-CSDN博客
2)创建CMake项目教程如下所示。
使用Visual Studio创建跨平台CMake项目_visual studio 生成cmakelist-CSDN博客
3)如果你按要求执行完前两步,那你当前的项目应该是一个总项目+子项目的组合。
4)打开总项目的CMakeLists,将配置改为如下所示。
- # 设置CMake最小版本
- cmake_minimum_required (VERSION 3.8)
- # 设置项目名字
- project ("Main")
- # 配置编译器参数
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED True)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp")
- # 包含子项目。
- add_subdirectory ("TestCMake")
5)配置编译器参数可以按自己需求开启。假设你想开启OpenMP支持,只需要找到它,把它的快捷名称用set配置即可。
6)再打开子项目TestCMake的CMakeLists。add_executable就是将源码和项目执行文件绑定;后面的命令就是用来配置OpenCV的,处于个人习惯,我喜欢给路径定义一个变量,当然也可以不用这一步;最主要的就是用include_directories将头文件包含,用target_link_libraries将lib包含;而bin一般情况要么放在系统根目录,要么配置了环境变量,当然也可以用代码直接复制bin里的dll文件到当前项目路径。
7)我写了一段测试代码,如下分别是TestCMake.h和TestCMake.cpp。
- #pragma once
- #include <iostream>
- #include <opencv2/opencv.hpp>
- #include "TestCMake.h"
-
- using namespace std;
- using namespace cv;
-
- int main()
- {
- Mat A = Mat::zeros(10000, 10000, CV_32FC1);
- // 随意创建一个A矩阵
- for (int i = 0; i < A.rows; i++)
- {
- for (int j = 0; j < A.cols; j++)
- {
- A.at<float>(i, j) = rand() % 100 / 100.f;
- }
- }
- Mat B0, B1, B2;
- B0 = A.clone();
- B1 = A.clone();
- B2 = A.clone();
-
- // 动态地址操作法
- double time0 = static_cast<double>(getTickCount());
- for (int i = 0; i < A.rows; i++)
- {
- for (int j = 0; j < A.cols; j++)
- {
- B0.at<float>(i, j) *= 2;
- }
- }
- time0 = ((double)getTickCount() - time0) / getTickFrequency();
- cout << " 动态地址法运行时间为:" << time0 << "秒" << endl << endl;
-
- // 迭代器操作法
- double time1 = static_cast<double>(getTickCount());
- Mat_<float>::iterator it = B1.begin<float>();
- Mat_<float>::iterator itend = B1.end<float>();
- for (; it != itend; ++it)
- {
- (*it) *= 2;
- }
- time1 = ((double)getTickCount() - time1) / getTickFrequency();
- cout << " 迭代器法运行时间为:" << time1 << "秒" << endl << endl;
-
- // 指针操作法
- double time2 = static_cast<double>(getTickCount());
- for (int i = 0; i < A.rows; i++)
- {
- float *data = B2.ptr<float>(i);
- for (int j = 0; j < A.cols; j++)
- {
- data[j] *= 2;
- }
- }
- time2 = ((double)getTickCount() - time2) / getTickFrequency();
- cout << " 指针法运行时间为:" << time2 << "秒" << endl << endl;
-
- system("pause");
- return 0;
- }
8)运行看看,搞定。
以上就是“使用Visual Studio在CMake项目中链接第三方库”的教程。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。