如何在CMake中使用findpackage添加dlib?

6
这是我的CMakeLists.txt文件:
project( WolframMachine )                                    
cmake_minimum_required(VERSION 3.1)
set (CMAKE_CXX_STANDARD 11)
set(CMAKE_SUPPRESS_REGENERATION true)
include(ExternalProject)
set(Boost_INCLUDE_DIR "C:/boost_1_66_0")
set(Boost_LIBRARY_DIR "C:/boost_1_66_0/lib64-msvc-14.0")
SET("OpenCV_DIR" "C:/opencv-3.4.1/build")
SET(dlib_DIR "C:/dlib-19.13/")  # <============ DLIB
find_package( OpenCV COMPONENTS core imgproc highgui aruco optflow plot REQUIRED )
find_package(dlib REQUIRED)  # <============ DLIB
add_subdirectory(dlibtest)

运行cmake-gui后,我得到以下内容:

enter image description here

手动设置dlib_DIR也没有帮助。我该如何解决这个问题?

更新:尝试了其他dlib_DIR值,但没有成功:

SET(dlib_DIR "C:/dlib-19.13/build/dlib/CMakeFiles/Export/lib/cmake/dlib")

出现相同的错误:

在此输入图片描述

并设置

SET(dlib_DIR "C:/dlib-19.13/build/dlib/config")

给出另一个毫无意义的错误:

在这里输入图片描述


手动设置dlib_DIR没有帮助。将“dlib_DIR”变量设置为包含“dlibConfig.cmake”文件的目录。该目录可能以“cmake/dlib”结尾。 - Tsyvarev
将dlib设置到该文件夹会导致另一个错误。 - Stepan Yakovenko
它会给出哪个错误? - Tsyvarev
@Tsyvarev,请查看我的更新。 - Stepan Yakovenko
  1. dlib_DIR的内容是什么?实际文件内容,而不是路径。
  2. 请将您的错误作为文本包含,而不是图像。
- Stephen Newell
1
你刚刚好像构建了,但是没有安装dlib。 - Tsyvarev
3个回答

1

以下是我遵循的步骤,

安装dlib时,请将链接更改为所需版本

wget http://dlib.net/files/dlib-19.6.tar.bz2 
tar xvf dlib-19.6.tar.bz2
cd dlib-19.6/
mkdir build
cd build
cmake ..
cmake --build . --config Release
sudo make install
sudo ldconfig

在你的项目中,
find_package(dlib REQUIRED)

target_link_libraries(try_convex  dlib::dlib)

1

看起来dlib并不是为了使用find_package而设计的。你需要将它作为子目录添加:

add_subdirectory(C:/dlib-19.13 dlib_build)

并且将结果库添加到您的二进制文件中:
target_link_libraries( ${CUR_PROJECT_NAME} ${OpenCV_LIBS} ${Boost_LIBRARIES} dlib::dlib)
# ---------------------------------------------------------------------------^^^^^^^^^^

DLib可以很好地与find_package一起使用。我们在项目中使用它,效果很好。我们的CMakeLists.txt包含以下3行:find_package(DLIB REQUIRED)include_directories(${DLIB_INCLUDE_DIRECTORY})target_link_libraries(your_project ${DLIB_LIBRARIES} dlib) - nada
这个解决方案由Dlib提出,并在examples/CMakeLists.txt中使用。唯一的问题是,每当你清理项目时,Dlib也会被清理,需要重新编译! - ma.mehralian

0

你能在顶层的CMakeLists.txt中尝试一下吗?

SET(dlib_ROOT "C:/dlib-19.13/")

或者

SET(dlib_DIR "C:/dlib-19.13/" CACHE STRING "")

手动设置dlib路径确实不是正确的做法。如果dlib安装正确,cmake将会找到它。如果你正在使用Windows系统:MSYS2默认支持dlib和cmake。 - nada

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接