win11系统下配置clion c++机器学习库dlib
·
VS下配置dlib库的方法请查看下面这篇文章
https://blog.csdn.net/qq_34013247/article/details/124612321
现在我们在clion上操作。
配置条件:win11,clion c++,工具链msvc,dlib,opencv
dlib还依赖opencv库,请下载好,解压。
cmakelists.txt设置如下:
cmake_minimum_required(VERSION 3.28)
project(DlibOpenCVTest)
# 设置C++标准
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 添加 /bigobj 编译选项
if(MSVC)
add_compile_options(/bigobj)
endif()
# 查找 OpenCV 包
find_package(OpenCV REQUIRED PATHS "G:/software/opencv411/opencv/build")
# 设置 dlib 路径
set(DLIB_ROOT "H:/software/Dlib200")
set(DLIB_INCLUDE_DIRS "${DLIB_ROOT}")
# 包含头文件目录
include_directories(
${OpenCV_INCLUDE_DIRS}
${DLIB_INCLUDE_DIRS}
)
# 添加可执行文件(只包含 main.cpp)
add_executable(test main.cpp)
target_sources(test PRIVATE
"${DLIB_ROOT}/dlib/all/source.cpp" )
# 链接库
target_link_libraries(test ${OpenCV_LIBS})
# 对于 dlib,需要链接一些系统库
if(UNIX AND NOT APPLE)
target_link_libraries(test pthread)
elseif(WIN32)
target_link_libraries(test ws2_32 winmm)
endif()
# 设置调试和发布版本的配置
set_target_properties(test PROPERTIES
DEBUG_POSTFIX "d"
RELEASE_POSTFIX ""
)
测试代码:
#include <dlib/matrix.h>
#include <iostream>
using namespace dlib;
using namespace std;
int main() {
cout << "=== 测试编译好的dlib库 ===" << endl;
// 创建矩阵
matrix<double> A(3, 3);
A = 1, 2, 3,
4, 5, 6,
7, 8, 10;
cout << "矩阵 A:\n" << A << endl;
// 测试需要LAPACK的功能
matrix<double> A_inv = inv(A);
cout << "A 的逆矩阵:\n" << A_inv << endl;
// 验证
matrix<double> identity = A * A_inv;
cout << "A * A_inv (应该接近单位矩阵):\n" << identity << endl;
cout << "? dlib 库使用成功!" << endl;
#if defined(_DLL) //当 defined(_DLL) 为真时,您的程序确实是使用动态运行时库编译的。
#ifdef _DEBUG
std::cout << "运行时库: 动态调试版本 (MDd) (嵌套的代码形式)" << std::endl;
#else
std::cout << "运行时库: 动态发布版本 (MD)(嵌套的代码形式)" << std::endl;
#endif
std::cout << "说明: 程序依赖于外部的 MSVCRT DLL(嵌套的代码形式)\n" << std::endl;
#else
#ifdef _DEBUG
std::cout << "\n运行时库: 静态调试版本 (MTd)(嵌套的代码形式)" << std::endl;
#else
std::cout << "运行时库: 静态发布版本 (MT)(嵌套的代码形式)" << std::endl;
#endif
std::cout << "说明: 运行时库已静态链接到程序中(嵌套的代码形式)\n" << std::endl;
#endif
return 0;
}
运行结果:
=== 测试编译好的dlib库 ===
矩阵 A:
1 2 3
4 5 6
7 8 10
A 的逆矩阵:
-0.666667 -1.33333 1
-0.666667 3.66667 -2
1 -2 1
A * A_inv (应该接近单位矩阵):
1 0 0
0 1 8.88178e-16
0 0 1
? dlib 库使用成功!
运行时库: 动态发布版本 (MD)(嵌套的代码形式)
说明: 程序依赖于外部的 MSVCRT DLL(嵌套的代码形式)
Process finished with exit code 0
这个表示程序代码能正常运行。不过有个小小瑕疵,就是目录结构有点不好看,那个all文件夹显示出来

更多推荐
所有评论(0)