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

How can I add dlib in cmake with findpackage?

这是我的 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 给我以下内容:

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

UPD:尝试了其他 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 并不是为了用 find_package 添加它而设计的。您需要做的是将其添加为子目录:

add_subdirectory(C:/dlib-19.13 dlib_build)

并将生成的库添加到您的二进制文件中:

target_link_libraries( ${CUR_PROJECT_NAME} ${OpenCV_LIBS} ${Boost_LIBRARIES} dlib::dlib)
# ---------------------------------------------------------------------------^^^^^^^^^^

你能在顶级 CMakeLists.txt 试试这些吗?

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

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

这是我遵循的步骤,

要安装 dlib,请将 link 更改为所需版本

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)