lib имя цели
:
: имя-файла требования
;
lib имя-цели
: другое-имя-файла другие-требования
;
Например, отладочный и окончательный варианты готовой библиотеки могут быть объявлены следующим образом.
lib cryptolib
:
: ../libraries/cryptolib/cryptolib_debug.lib
debug
;
lib cryptolib
: ../libraries/cryptolib/cryptolib.lib
release
;
Если готовая библиотека расположена в одной из директорий, в которых компоновщик выполняет поиск автоматически, как описано в рецепте 1.5, цель можно объявить следующим образом.
lib имя-цели
: имя-библиотеки
;
Здесь имя-библиотеки — это имя, которое должно быть передано компоновщику и которое может отличаться от реального имени файла, как обсуждалось в рецепте 1.5. Чтобы дать указание компоновщику искать в определенной директории, напишите
lib имя-цели
: имя-библиотеки
путь-к-библиотеке
;
Установка
Сложное приложение может требовать установки вместе с несколькими дополнительными исполняемыми файлами и динамическими библиотеками, от которых оно зависит. Вместо того чтобы указывать эти файлы по отдельности, используйте функцию install-dependencies, которая позволяет вам указать только главный исполняемый файл и тип зависимостей, которые должны быть установлены. В примере 1.13 требование onвключает функцию install-dependencies, а требования EXEи SHARED_LIBговорят BoostBuild установить все зависимости, которые являются исполняемыми файлами или динамическими библиотеками. Другие возможные значения функции install-typeвключают LIBи IMPORT_LIB.
Организация проекта
Все три Jam-файла, используемые при сборке исполняемого файла hellobeatles , называются Jamroot . Это хорошо для такого простого проекта, но обычно следует организовывать набор Jam-файлов в иерархию с единственным высшим Jam-файлом, определяющим корень проекта. Организация проектов подобным образом позволяет использовать некоторые из более сложных функций Boost.Build's, таких как наследование свойств дочерними проектами. Одним из способов сделать такую организацию в нашем случае является изменение имен Jam-файлов в директориях johnpaul , georgeringo и hellobeatles с Jamroot на Jamfile и добавление файла Jamroot со следующим содержимым в родительскую директорию.
# jamfile для примера приложения
build-project hellobeatles ;
Правило build-projectпросто говорит bjam собрать данный проект, который может быть указан либо по пути, либо с помощью символьного идентификатора. Если вы перейдете в директорию, содержащую Jamroot, и запустите bjam , то будут собраны три дочерних проекта.
Смотри также
Рецепты 1.5, 1.13 и 1.18.
1.11. Сборка статической библиотеки с помощью IDE
Проблема
Вы хотите использовать IDE для сборки статической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.1.
Решение
Основная процедура выглядит следующим образом.
1. Создайте новый проект и укажите, что требуется собрать статическую библиотеку, а не исполняемый файл или динамическую библиотеку.
2. Выберите конфигурацию сборки (т. е. отладочную или окончательную версию и поддержку или отсутствие поддержки многопоточности).
3. Укажите имя библиотеки и директорию, в которой она должна быть создана.
4. Добавьте в проект исходные файлы.
5. Если необходимо, укажите одну или несколько директорий, где компилятор должен искать подключаемые заголовочные файлы. (См. рецепт 1.13.)
6. Соберите проект.
Шаги этой процедуры могут варьироваться в зависимости от IDE — например, для некоторых IDE некоторые шаги будут объединены в один или изменится их порядок. Второй шаг подробно описывается в рецептах 1.21, 1.22 и 1.23. А сейчас вы. насколько это возможно, должны использовать параметры по умолчанию.
Например, вот как надо собирать статическую библиотеку из исходных файлов из примера 1.1 с помощью Visual C++ IDE.
В меню File выберите New→Project, в левой панели выберите Visual С++ [2] В версиях Visual C++ до Visual C++ 2005 эта опция называлась Visual C++ Projects .
, выберите Win32 Console Application и введите в качестве имени проекта libjohnpaul . В мастере Win32 Application Wizard перейдите в раздел Application Settings (Параметры приложения), выберите Static library, отключите опцию Precompiled header (Прекомпилированные заголовочные файлы) и нажмите на Finish (Готово). Теперь у вас должен иметься пустой проект с двумя конфигурациями сборки — Debug и Release, и первая будет активной.
Читать дальше