You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过find_package在CMake中添加dlib?配置失败求助

解决CMake无法定位dlib库的问题

看起来你在配置dlib库时遇到了CMake查找失败的问题,我来帮你一步步解决这个问题。

首先要明确一个核心点:CMake的find_package(dlib REQUIRED)必须找到dlibConfig.cmake或dlib-config.cmake文件才能正常工作,你之前设置的路径错误正是因为没指向这个配置文件所在的目录。下面是具体的修复步骤:

步骤1:先正确编译dlib库

dlib不能直接用源码目录让CMake查找,必须先编译生成对应的库文件和CMake配置文件:

  • 打开cmake-gui,设置dlib的源码目录为C:/dlib-19.13,再指定一个独立的build目录(比如C:/dlib-19.13/build)
  • 点击「Configure」,选择你正在使用的MSVC版本(对应Boost用的14.0,也就是VS2015)
  • 若需要动态库,可勾选BUILD_SHARED_LIBS选项;默认是静态库,直接用也没问题
  • 点击「Generate」生成VS工程文件,打开生成的.sln
  • 先编译ALL_BUILD项目,等编译完成后,再编译INSTALL项目(这一步会把dlib的头文件、库文件和CMake配置文件安装到指定位置,默认路径是C:/dlib-19.13/build/install)

步骤2:设置正确的dlib_DIR路径

根据你是否执行了INSTALL步骤,选择对应的路径:

  • 如果执行了INSTALL:dlib_DIR应指向C:/dlib-19.13/build/install/lib/cmake/dlib(这个目录下存放着dlibConfig.cmake)
  • 如果没执行INSTALL:直接指向dlib的build根目录C:/dlib-19.13/build(编译完成后,dlibConfig.cmake会生成在这里)

步骤3:修正你的CMakeLists.txt

推荐优先在cmake-gui中手动指定路径(更灵活),如果要写在文件里,正确的写法如下:

project(WolframMachine)
cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_SUPPRESS_REGENERATION true)
include(ExternalProject)

# Boost配置
set(Boost_INCLUDE_DIR "C:/boost_1_66_0")
set(Boost_LIBRARY_DIR "C:/boost_1_66_0/lib64-msvc-14.0")

# OpenCV配置
set(OpenCV_DIR "C:/opencv-3.4.1/build")

# dlib配置 - 使用正确的路径
set(dlib_DIR "C:/dlib-19.13/build/install/lib/cmake/dlib") # 或者替换为你的build根目录

find_package(OpenCV COMPONENTS core imgproc highgui aruco optflow plot REQUIRED)
find_package(dlib REQUIRED)

add_subdirectory(dlibtest)

额外排查点

  • 确认dlib版本(19.13)与CMake版本(3.1)兼容:dlib-19.13最低要求CMake 3.0以上,3.1满足要求,但如果仍有问题,可以尝试升级CMake到3.5+版本
  • 检查编译dlib时的编译器版本和当前项目的编译器版本是否一致(都是VS2015 MSVC14.0),避免跨编译器的兼容性问题
  • 如果还是报错,可以在cmake-gui中打开「Advanced」选项,查看dlib_DIR的实际指向,确认路径下确实存在dlibConfig.cmake文件

内容的提问来源于stack exchange,提问作者Stepan Yakovenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:03:11