1.8. Сборка статической библиотеки с помощью Boost.Build
1.8. Сборка статической библиотеки с помощью Boost.Build
Проблема
Вы хотите использовать Boost.Build для сборки статической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.1.
Решение
В директории, где вы хотите создать статическую библиотеку, создайте файл Jamroot. В файле Jamroot вызовите правило lib, объявляющее целевую библиотеку, указав в качестве исходных файлов свои файлы .cpp и используя в качестве требования свойство <link>static. Чтобы указать директорию поиска заголовочных файлов библиотеки, т. е. директорию, относительно которой должны разрешаться директивы include для заголовочных файлов этой библиотеки, добавьте требование к использованию в виде <include>путь. Чтобы указать компилятору, где искать включенные заголовки, может потребоваться использовать несколько директив вида <include>путь. Наконец, в директории, содержащей Jamroot, запустите bjam, как описано в рецепте 1.7.
Например, чтобы собрать статическую библиотеку из исходных файлов, перечисленных в примере 1.1, ваш Jamroot может выглядеть как в примере 1.11.
Пример 1.11. Jam файл для сборки статической библиотеки libjohnpaul.lib или libjohnpaul.a
# Jamfile для проекта libjohnpaul
lib libjohnpaul
: # исходники
john.cpp paul.cpp johnpaul.cpp
: # требования
<link>static
: # сборка-по-умолчанию
: # требования-к-использованию
<include>..
;
Чтобы собрать библиотеку, введите:
> bjam libjohnpaul
Обсуждение
Правило lib используется для объявления цели, представляющей статическую или динамическую библиотеку. Как показано в примере 1.9, оно имеет такой же вид, что и правило exe. Использование требования <include>.. освобождает проект, который зависит от вашей библиотеки, от необходимости явно указывать в своих требованиях директорию заголовочных файлов вашей библиотеки. Требование <link>static указывает, что ваша цель должна всегда собираться как статическая библиотека. Если вы хотите сохранить возможность сборки целевой библиотеки как статической и как динамической, опустите требование <link>static. Должна ли библиотека собираться как статическая или как динамическая, может быть указано в командной строке или в требованиях цели, которая зависит от целевой библиотеки. Например, если в примере 1.11 требование <link>static опустить, то чтобы собрать цель libjohnpaul как статическую библиотеку, потребуется ввести команду:
> bjam libjohnpaul link=static
Однако написание исходного кода для библиотеки, которая может быть собрана и как статическая, и как динамическая, является нетривиальной задачей, что показано в рецепте 1.9.
Смотри также
Рецепты 1.3, 1.11 и 1.16.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 24 Управление терминалами с помощью библиотеки S-Lang
Глава 24 Управление терминалами с помощью библиотеки S-Lang С помощью библиотеки S-Lang, написанной Джоном Дэвисом (John Е. Davis), можно осуществлять доступ к терминалам на среднем уровне. Все действия, связанные с управлением терминалами на низком уровне, осуществляются
Библиотеки TR1 и Boost
Библиотеки TR1 и Boost Ссылки на библиотеки TR1 и Boost вы будете встречать на протяжении всей этой книги. Каждой из них посвящено отдельное правило (54 – TR1 и 55 – Boost), но, к сожалению, они находятся в самом конце книги. При желании можете прочесть их прямо сейчас, но если вы
10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore
10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore Библиотека PStore реализует хранение объектов Ruby в файле. Объект класса PStore может содержать несколько иерархий объектов Ruby. У каждой иерархии есть корень, идентифицируемый ключом. Иерархии считываются с диска
1.3. Сборка статической библиотеки из командной строки
1.3. Сборка статической библиотеки из командной строки ПроблемаВы хотите использовать свои инструменты командной строки для сборки статической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.1.РешениеВо-первых, используйте компилятор для
1.4. Сборка динамической библиотеки из командной строки
1.4. Сборка динамической библиотеки из командной строки ПроблемаВы хотите использовать свои инструменты командной строки для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеВыполните следующие шаги.1. Используйте
1.6. Установка Boost.Build
1.6. Установка Boost.Build ПроблемаВы хотите получить и установить Boost.Build.РешениеОбратитесь к документации Boost.Build по адресу www.boost.org/boost-build2 или выполните эти шаги.1. Перейдите на домашнюю страницу Boost — www.boost.org и проследуйте по ссылке Download (скачать) на страницу SourceForge
1.7. Сборка простого приложения «Hello, World» с помощью Boost.Build
1.7. Сборка простого приложения «Hello, World» с помощью Boost.Build ПроблемаВы хотите собрать простую программу «Hello, World», подобную приведенной в примере 1.4, с помощью BoostBuild.РешениеВ директории, где вы хотите создать исполняемый файл и все создаваемые при этом промежуточные файлы,
1.9. Сборка динамической библиотеки с помощью Boost.Build
1.9. Сборка динамической библиотеки с помощью Boost.Build ПроблемаВы хотите использовать Boost.Build для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеВ директории, где вы хотите создать динамическую библиотеку и, если
1.11. Сборка статической библиотеки с помощью IDE
1.11. Сборка статической библиотеки с помощью IDE ПроблемаВы хотите использовать IDE для сборки статической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.1.РешениеОсновная процедура выглядит следующим образом.1. Создайте новый проект и укажите,
1.12. Сборка динамической библиотеки с помощью IDE
1.12. Сборка динамической библиотеки с помощью IDE ПроблемаВы хотите использовать IDE для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеОсновная процедура выглядит следующим образом.1. Создайте новый проект и
1.13. Сборка сложного приложения с помощью IDE
1.13. Сборка сложного приложения с помощью IDE ПроблемаВы хотите использовать IDE для сборки исполняемого файла, зависящего от нескольких статических и динамических библиотек.РешениеОсновная процедура выглядит следующим образом.1. При сборке из исходного кода библиотек, от
1.15. Сборка простого приложения «Hello, World» с помощью GNU make
1.15. Сборка простого приложения «Hello, World» с помощью GNU make ПроблемаВы хотите с помощью GNU make собрать простую программу «Hello, World», подобную приведенной в примере 1.4.РешениеПрежде чем вы напишете свой первый make-файл, вы должны познакомиться с терминологией, make-файл состоит из