Чтение онлайн

ЖАНРЫ

C++. Сборник рецептов

Когсуэлл Джефф

Шрифт:

using msvc : : "С:/Tools/Compilers/Visual Studio/Vc7/bin/cl" ;

Если у вас установлено несколько версий инструментария, вы можете указать правило

using
несколько раз с одним и тем же именем инструментария, передавая ему в качестве второго аргумента номер версии, а в качестве третьего — команду компилятора. Например, чтобы настроить две версии инструментария Intel, используйте следующее:

using intel : 7.1 : "C:/Program Files/Intel/Compiler70/IA32/Bin/icl" ;

using intel : 8.0 : "C./Program Files/Intel/CPP/Compiler80/IA32/Bin/icl" ;

Имена, используемые Boost.Build для нескольких разных инструментариев, описываемых в этой главе, приведены

в табл 1.14.

Табл. 1.14. Имена инструментариев Boost.Build

Инструментарий Имя
GCC gcc
Visual C++ msvc
Intel intel
Metrowerks cw
Comeau como
Borland borland
Digital Mars dmc

1.7. Сборка простого приложения «Hello, World» с помощью Boost.Build

Проблема

Вы хотите собрать простую программу «Hello, World», подобную приведенной в примере 1.4, с помощью BoostBuild.

Решение

В директории, где вы хотите создать исполняемый файл и все создаваемые при этом промежуточные файлы, создайте текстовый файл с именем Jamroot. В файле Jamroot укажите два правила, приведенных далее. Во-первых, укажите правило exe, объявляющее целевой исполняемый файл и исходные файлы .cpp. Далее укажите правило

install
, определяющее имя целевого исполняемого файла и директорию, в которую его следует устанавливать. Наконец, запустите bjam, чтобы собрать программу.

Например, чтобы собрать исполняемый файл hello или hello.exe из файла hello.cpp из примера 1.4, создайте в директории, содержащей файл hello.cpp, файл с именем Jamroot с содержимым, показанным в примере 1.8.

Пример 1.8. Jamfile для проекта hello

# jamfile для проекта hello

exe hello : hello.cpp ;

install dist : hello : <location>. ;

Далее перейдите в директорию, содержащую hello.cpp и Jamroot, и введите следующую команду.

> bjam hello

Эта команда собирает исполняемый файл hello или hello.exe в поддиректории текущей директории. Наконец, введите команду:

> bjam dist

Эта команда копирует исполняемый файл в директорию, указанную в свойстве

location
, которое в нашем случае равно текущей директории.

В момент сдачи этой книги в печать разработчики Boost.Build готовят официальный релиз BoostBuild версии 2. К моменту, когда вы будете это читать, версия 2 уже, возможно, будет выпущена. Если нет, вы можете задействовать поведение, описанное в этой главе, передав в bjam опцию командной строки – -v2. Например, вместо ввода
bjam hello
введите
bjam --v2 hello
.

Обсуждение

Файл Jamroot является примером файла Jamfile. В то время как для управления небольшим набором исходных файлов C++ можно использовать один Jam-файл, большой набор файлов обычно требует нескольких Jam-файлов с иерархической организацией. Каждый Jam-файл находится в отдельной директории и соответствует отдельному проекту. Большая часть Jam-файлов просто называется Jamfile, но самый верхний Jam-файл — Jam-файл, который расположен в директории, родительской по отношению ко всем другим директориям, содержащим остальные Jam-файлы, — называется Jamroot. Проект, определяемый этим верхним Jam- файлом, называется корнем проекта. Каждый проект, за исключением корня проекта, имеет родительский проект определяемый проектом, расположенным в ближайшей к нему родительской директории, содержащей Jam-файл.

Эта иерархическая организация обладает большими преимуществами: например, она облегчает применение к проекту и всем его дочерним проектам требований, таких как поддержка потоков.

Каждый проект — это набор целей. Цели объявляются с помощью вызова правил, таких как правило

exe
и правило
install
. Большая часть целей соответствует двоичным файлам или, более точно, набору связанных двоичных файлов, таких как отладочная и финальная (релиз) сборки приложения.

Правило

exe
используется для объявления исполняемой цели. Вызов этого правила имеет вид, показанный в примере 1.9.

Пример 1.9. Вызов правила exe

exe имя-целевого-файла

 : исходные-файлы

 : требования

 : сборка-по-умолчанию

 : требования-к-использованию

 ;

Здесь

имя-целевого-файла
определяет имя исполняемого файла,
исходные-файлы
определяет список исходных файлов и библиотек, требования определяет свойства, которые должны применяться к цели независимо от каких-либо дополнительных свойств, указанных в командной строке или унаследованных от другого проекта,
сборка-по-умолчанию
определяет свойства, которые будут применены к цели, если не явно запрошено другое значение свойства, и
требования-к-использованию
определяет свойства, которые будут переданы всем остальным целям, зависящим от данной цели.

Свойства указываются в виде

<функция>значение
. Например, чтобы объявить исполняемый файл, который будет всегда собираться с поддержкой потоков, вы должны написать:

exe hello

 : hello.cpp

 : <threading>multi

 ;

От вас не требуется писать двоеточия, разделяющие последовательные аргументы правила Boost.Build, если вы не указываете значения этих аргументов.

Поделиться с друзьями: