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 : . ;
Далее перейдите в директорию, содержащую hello.cpp и Jamroot , и введите следующую команду.
> bjam hello
Эта команда собирает исполняемый файл hello или hello.exe в поддиректории текущей директории. Наконец, введите команду:
> b jam 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 имя-целевого-файла
: исходные-файлы
: требования
: сборка-по-умолчанию
: требования-к-использованию
;
Здесь имя-целевого-файла определяет имя исполняемого файла, исходные-файлы определяет список исходных файлов и библиотек, требования определяет свойства, которые должны применяться к цели независимо от каких-либо дополнительных свойств, указанных в командной строке или унаследованных от другого проекта, сборка-по-умолчанию определяет свойства, которые будут применены к цели, если не явно запрошено другое значение свойства, и требования-к-использованию определяет свойства, которые будут переданы всем остальным целям, зависящим от данной цели.
Читать дальше