время как для управления небольшим набором исходных файлов 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
: