Cmake:如何将库标记为依赖于系统库

时间:2013-09-04 17:32:55

标签: c++ c linux cmake

我有一个依赖于linux系统库util的C ++库。我可以使用g ++命令“g ++ lib.cpp -lutil”编译我的库,它编译得很好。

当我将我的图书馆添加到我们的大项目时,我遇到了麻烦。我可以转到包含我们库的每个目标,并使用'target_link_libraries'命令让它包含util。问题是有很多目标依赖于这个库。如果我可以编辑库的CMakeLists.txt并说它依赖于util会好得多。但我找不到这样做的方法。

是否可以将我的库标记为依赖于util,以便包含我的库的任何目标也将在util中链接?

2 个答案:

答案 0 :(得分:4)

您所要做的就是使用target_link_libraries将您的库 lib 链接到 util 。现在,只要其他目标(可执行文件或库)链接到 lib ,它们也会链接到 util

答案 1 :(得分:0)

如果您创建共享库,则始终可以将其他一些库链接到该库。因此,如果s1.ccs2.cc是您图书馆的来源(共享公共header.h),您可以使用

编译图书馆
  g++ -Wall -fPIC s1.cc -c -o s1.pic.o
  g++ -Wall -fPIC s2.cc -c -o s2.pic.o
  g++ -Wall -shared s1.pic.o s2.pic.o -lutil -o libyours.so

(或具有适当的makecmake规则执行上述操作)。然后,libyours.so的所有用户也会链接/usr/lib/libutil.so

然而,你真正关心的是包依赖。为你的.deb创建一个包(Debian或Ubuntu上的libyours,....),该包将适当地依赖于其他包。

您也可以使用libyours使用pkg-config的用户。然后编写一个描述依赖关系的libyours.pc文件。