время как для управления небольшим набором исходных файлов C++ можно использовать один Jam-файл, большой набор файлов обычно требует нескольких Jam-файлов с иерархической организацией. Каждый Jam-файл находится в отдельной директории и соответствует отдельному
Эта иерархическая организация обладает большими преимуществами: например, она облегчает применение к проекту и всем его дочерним проектам
Каждый проект — это набор exe и правило install. Большая часть целей соответствует двоичным файлам или, более точно, набору связанных двоичных файлов, таких как отладочная и финальная (релиз) сборки приложения.
Правило exe используется для объявления исполняемой цели. Вызов этого правила имеет вид, показанный в примере 1.9.
exe
:
:
:
:
;
Здесь определяет имя исполняемого файла, определяет список исходных файлов и библиотек, требования определяет свойства, которые должны применяться к цели независимо от каких- либо дополнительных свойств, указанных в командной строке или унаследованных от другого проекта, определяет свойства, которые будут применены к цели, если не явно запрошено другое значение свойства, и определяет свойства, которые будут переданы всем остальным целям, зависящим от данной цели.
Свойства указываются в виде <. Например, чтобы объявить исполняемый файл, который будет всегда собираться с поддержкой потоков, вы должны написать:
exe hello
: hello.cpp
: <threading>multi
;
От вас не требуется писать двоеточия, разделяющие последовательные аргументы правила Boost.Build, если вы не указываете значения этих аргументов.
Некоторые часто используемые функции и их возможные значения перечислены в табл. 1.15.
| Функция | Значение | Эффект |
|---|---|---|
| include | Определяет путь для поиска заголовочных файлов | |
| define | Определяет макрос | |
| threading | multi или single | Включает или отключает поддержку потоков |
| runtime-link | static или shared | Определяет тип компоновки с библиотекой времени выполнения¹ |
| variant | debug или release | Запрашивает отладочную или окончательную сборку |
¹ См. рецепт 1.23.
Когда собирается целевой исполняемый файл, или цель, соответствующая статической или динамической библиотеке, файл, соответствующий этой цели, создается в директории, дочерней по отношению к директории, содержащей Jam-файл. Относительным путь этой директории зависит от инструментария и конфигурации сборки, но он всегда начинается с
Для простоты я попросил вас создать Jam-файл из примера 1.8 в той же директории, в которой находится исходный файл
Правило install указывает Boost.Build скопировать один или несколько файлов, указанных как имена файлов или как имена главных целей, в указанное место. Вызов этого правила имеет вид, показанный в примере 1.10.
install
:
