Как связать со всеми библиотеками внутри каталога? - PullRequest
0 голосов
/ 19 октября 2018

Я использую meson-build для проекта c ++.

Я создал каталог с именем libs и поместил в него все нужные мне библиотеки, как мне с ним связаться?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Хорошо, это то, что я искал,

    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])

И спасибо за советы.

0 голосов
/ 19 октября 2018

После прочтения руководства по мезонным зависимостям , я не думаю, что у него есть такая опция.Вы должны указать зависимость для каждой библиотеки, которую хотите связать.

А вот отрывок из руководства о том, как вы должны делать это с вашими собственными библиотеками:

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

НО Это к лучшему, поскольку вы ДОЛЖНЫ очень тщательно управляете связанными библиотеками, почему?

  1. Связывание может быть успешным, даже если не все символы разрешены, иприложение будет аварийно завершать работу только во время выполнения.
  2. Вы хотите контролировать порядок связывания, если у вас более одной библиотеки с одинаковыми символами
  3. Вы не хотите связывать ненужные библиотеки, потому чтоони могут вставить вредоносный код в ваше приложение (например, ваш коллега может разместить вредоносную библиотеку в этой папке, и вы никогда не узнаете об этом, но у вас будет бэкдор в вашем приложении)
...