C++. Сборник рецептов - [20]

Шрифт
Интервал

>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

ИнструментарийИмя
GCCgcc
Visual C++msvc
Intelintel
Metrowerkscw
Comeaucomo
Borlandborland
Digital Marsdmc

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 в поддиректории текущей директории. Наконец, введите команду:

>> 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

> : multi

> ;

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

Некоторые часто используемые функции и их возможные значения перечислены в табл. 1.15.


Табл. 1.15. Часто используемые функции Boost.Build

ФункцияЗначениеЭффект
includePathОпределяет путь для поиска заголовочных файлов
definename=[value]Определяет макрос
threading>multi или >singleВключает или отключает поддержку потоков
runtime-link>static или >sharedОпределяет тип компоновки с библиотекой времени выполнения¹
variant>debug или >releaseЗапрашивает отладочную или окончательную сборку

¹ См. рецепт 1.23.


Рекомендуем почитать
Теоретический минимум по Computer Science

Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием. Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день. «Эта книга пригодится и для решения повседневных задач.


Язык PL/SQL

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.


Перевод в электронный формат, кодированные наборы шрифтов и система Оптического Распознавания Символов для многошрифтовых информационных ресурсов на примере “Летописи журнальных статей”

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


Системное программное обеспечение. Лабораторный практикум

В книге рассматриваются базисные теоретические основы, необходимые для построения компиляторов, основные технологические приемы и методы их реализации. В ней приведены различные варианты заданий для выполнения лабораторного практикума по курсу «Системное программное обеспечение», а также примеры выполнения этих заданий. В каждом примере подробно рассматриваются все особенности его выполнения, как на этапе подготовки необходимой математической базы, так и на этапе программной реализации. В лабораторных работах автор обращает внимание на основные сложности, связанные с ее выполнением, а также на возможные типичные ошибки и недочеты, дает рекомендации по возможностям программной реализации, отличным от кода, приводимого в примерах.Книга ориентирована на студентов, обучающихся в технических вузах по специальностям, связанным с вычислительной техникой.


Программирование на языке Пролог для искусственного интеллекта

Книга известного специалиста по программированию (Югославия), содержащая основы языка Пролог и его приложения для решения задач искусственного интеллекта. Изложение отличается методическими достоинствами — книга написана в хорошем стиле, живым языком. Книга дополняет имеющуюся на русском языке литературу по языку Пролог.Для программистов разной квалификации, специалистов по искусственному интеллекту, для всех изучающих программирование.


Программирование на Visual C++. Архив рассылки

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.