环境:
window 10visual studio 2019(nmake/cl/link/lib/dumpbin)Qt 5.14.0 (designer/uic/moc)OpenCV 4.2.0Torch C++ 1.5.1cmake注意事项:
编译/链接的环境(编译/链接的命令行设置):Makefile/CMake/QMake includelib 运行环境:(设置PATH/或者拷贝到当前路径/或者拷贝到window安装目录下的system32) bin 动态库也有依赖环境: window的运行环境(基本上差不多)vcrt160.lib运行时(visual studio自带/动态库自带)lib库名.主版本号.副版本号.批次号.so
库名140.dll/库名160.dll
libtorch,opencv, qt的动态库所在路径设置为PATH环境变量
保存编译后的执行文件能调用到动态库;头文件目录
opencv C:\opencv_new\install\include qt C:\Qt\Qt5.13.0\5.13.0\msvc2017_64\include libtorch C:\libtorch\includelib
目录 C:\Qt\Qt5.13.0\5.13.0\msvc2017_64\libC:\opencv_new\install\x64\vc16\libC:\libtorch\lib lib文件 根据调用的模块使用Qt显示一副OpenCV读取的图像
main.cpp
#include <QtWidgets/QApplication> #include <QtWidgets/QDialog> #include <QtWidgets/QLabel> #include <opencv2/opencv.hpp> int main(int argc, char **argv){ // 1. 创建Qt应用 QApplication app(argc, argv); // 2. 创建对话框 QDialog dlg; dlg.setWindowTitle("CMake组织工程"); dlg.resize(600, 400); dlg.move(100, 100); // 3. 创建标签狂 QLabel lbl("图像显示", &dlg); lbl.setGeometry(0, 0, dlg.width(), dlg.height()); // 4. 打开图像 cv::Mat img = cv::imread("gpu.bmp"); cv::cvtColor(img, img, cv::COLOR_BGR2RGB); // 5. 显示图像 QImage qt_img(img.data, img.cols, img.rows, QImage::Format_RGB888); QPixmap qt_pixmap = QPixmap::fromImage(qt_img); lbl.setPixmap(qt_pixmap); lbl.setScaledContents(true); dlg.show(); return app.exec(); }build.bat
@rem 创建工程构建工作目录 @mkdir build @rem 进入构建目录 @cd build @rem 生成本地工程 @cmake .. @rem 直接编译visual studio工程 @cmake --build . --config Debug @rem 拷贝执行文件到图像所在目录 @copy .\Debug\main.exe ..\ @rem 回到代码目录 @cd ..最后运行build.bat进行编译,编译成功后运行main.exe
注意:
源代码头文件lib文件输出的文件名C++的编译选项/链接选项cmake的封装打包Cmake的抽象在于不需要指定具体的编译器
动态侦测,从而实现跨平台安装与部署运行展示