C++11 使用Cmake创建依赖于dlib的共享库 我在C++中构建一个共享库,它依赖于 dLIb使用CGuest.

C++11 使用Cmake创建依赖于dlib的共享库 我在C++中构建一个共享库,它依赖于 dLIb使用CGuest.,c++11,dlib,C++11,Dlib,虽然我可以使用make和make install构建和安装共享dlib,但到目前为止,我还没有找到链接到此共享dlib库的方法 DLib网站中给出的使用示例始终链接到静态库 这就是我到目前为止所做的: cmake_minimum_required(VERSION 2.8.12) project(face_align) set(CMAKE_CXX_STANDARD 11) find_package(dlib) add_library(face_align SHARED src/mylib.c

虽然我可以使用
make
make install
构建和安装共享
dlib
,但到目前为止,我还没有找到链接到此共享
dlib
库的方法

DLib网站中给出的使用示例始终链接到静态库

这就是我到目前为止所做的:

cmake_minimum_required(VERSION 2.8.12)
project(face_align)

set(CMAKE_CXX_STANDARD 11)

find_package(dlib)

add_library(face_align SHARED src/mylib.cpp)
target_link_libraries(face_align dlib::dlib)
链接器这样抱怨:

/usr/bin/ld: cannot find -ldlib::dlib
collect2: error: ld returned 1 exit status
CMakeFiles/face_align.dir/build.make:94: recipe for target 'libface_align.so' failed
make[2]: *** [libface_align.so] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/face_align.dir/all' failed
make[1]: *** [CMakeFiles/face_align.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
如果我从

添加库(面对齐共享src/mylib.cpp)
项目成功构建。这使我认为
dlib:dlib
指向的是静态库。我看到有一个
dlib:dlib\u共享的
,但是链接到这个也没有成功。

答案似乎是(1)作为静态库链接到dlib(2)使链接到dlib的代码位置独立:

编辑:

另外,在Linux中(我还没有在其他S.O.S中测试过这一点),CMake做了一些魔术,在以共享模式安装dlib库之后:

$ cd $DLIB
$ mkdir build && cd build
$ cmake ../dlib
$ make && make install
可以使用
target\u link\u libraries
简单地添加库,如下所示:

cmake_minimum_required(VERSION 2.8.12)
project(face_align)

set(CMAKE_CXX_STANDARD 11)

add_library(face_align SHARED src/mylib.cpp)
# Link Dlib
target_link_libraries(face_align dlib) 
然后,在代码中包括如下标题:

cmake_minimum_required(VERSION 2.8.12)
project(face_align)

set(CMAKE_CXX_STANDARD 11)

add_library(face_align SHARED src/mylib.cpp)
# Link Dlib
target_link_libraries(face_align dlib) 

#包括

使用add_子目录(dlib)Hello@DavisKing。谢谢你的评论。将来有没有计划使用find_软件包功能?有一个find_软件包()。试试最新的dlib对我来说,需要在target_link_库下设置dlib::dlib