Boost.Build и функция <link> для исполняемых файлов

Что это значит, когда я прохожу <link>static особенность к разделу требований при сборке исполняемого файла?

exe main
       : main.cpp
         /libs//my_library
       : <library>/boost//thread
         <link>static
       ;

Значит ли это, что оба /libs//my_library а также <library>/boost//thread должен быть построен со статической связью?

Если моя цель /libs//my_library имеет <link>static набор требований (создается только с этой функцией), будет ли возникать ошибка, если я пропущу <link>static требование для всех целей, которые зависят от этой библиотеки (как и выше)?

1 ответ

Решение

Что это значит, когда я прохожу <link>static особенность к разделу требований при сборке исполняемого файла?

Это означает, что нужно создавать (и ссылаться на) библиотеки зависимостей статически.

exe main
       : main.cpp
         /libs//my_library
       : <library>/boost//thread
         <link>static
       ;

Значит ли это, что оба /libs//my_library а также <library>/boost//thread должен быть построен со статической связью?

Да.

Если моя цель /libs//my_library имеет <link>static набор требований (создается только с этой функцией), будет ли возникать ошибка, если я пропущу <link>static требование для всех целей, которые зависят от этой библиотеки (как и выше)?

Нет, все в порядке. Если ваша библиотека имеет <link>static как требование, то он будет построен статически, несмотря ни на что, и нет необходимости иметь <link>static в зависимой цели только ради этой библиотеки в одиночку.

Обратите внимание, что можно запросить статическую сборку конкретной библиотеки зависимостей, не затрагивая другие библиотеки зависимостей, например:

exe e : /libs//mylib/<link>static /libs//otherlib /libs//someotherlib

это <link>static выше не влияет otherlib а также someotherlib, это относится только к mylib,

Другие вопросы по тегам