如何链接目录中的所有库?

时间:2018-10-19 17:30:24

标签: c++ meson-build

我正在将meson-build用于c ++项目。

我创建了一个名为libs的目录,并将所需的所有库放入其中,如何与之链接?

2 个答案:

答案 0 :(得分:2)

阅读meson's dependencies manual之后,我认为它没有这种选择。您应该为要链接的每个库指定一个依赖项。

这是手册中的片段,说明如何使用自己的库进行操作:

my_inc = include_directories(...)
my_lib = static_library(...)
my_dep = declare_dependency(link_with : my_lib, include_directories : my_inc)

但是这是最好的,因为您应该非常仔细地控制链接库,为什么?

  1. 即使不是所有符号都已解析,链接也可能成功,并且该应用程序只会在运行时崩溃。
  2. 如果您有多个具有相同符号的库,您想控制链接顺序
  3. 您不想链接不需要的库,因为它们可能会将恶意代码插入到您的应用程序中(例如,您的同事可以在该文件夹中植入恶意库,您永远不会知道,但是在您的应用程序中有后门)

答案 1 :(得分:2)

好的,这就是我想要的,

    cmplr = meson.get_compiler('cpp')
    mylib1 = cmplr.find_library('lib_name1', dir : 'path_to_directory')
    mylib2 = cmplr.find_library('lib_name2', dir : 'path_to_directory')
    ....
    executable(.... , dependencies : [mylib1, mylib2])

感谢您的提示。