Д. Стефенс - C++. Сборник рецептов
- Название:C++. Сборник рецептов
- Автор:
- Жанр:
- Издательство:КУДИЦ-ПРЕСС
- Год:2007
- Город:Москва
- ISBN:5-91136-030-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Д. Стефенс - C++. Сборник рецептов краткое содержание
Данная книга написана экспертами по C++ и содержит готовые рецепты решения каждодневных задач для программистов на С++. Один из авторов является создателем библиотеки Boost Iostreams и нескольких других библиотек C++ с открытым исходным кодом. В книге затрагивается множество тем, вот лишь некоторые из них: работа с датой и временем; потоковый ввод/вывод; обработка исключений; работа с классами и объектами; сборка приложений; синтаксический анализ XML-документов; программирование математических задач. Читатель сможет использовать готовые решения, а сэкономленное время и усилия направить на решение конкретных задач.
C++. Сборник рецептов - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Свойства указываются в виде < функция > значение
. Например, чтобы объявить исполняемый файл, который будет всегда собираться с поддержкой потоков, вы должны написать:
exe hello
: hello.cpp
: multi
;
От вас не требуется писать двоеточия, разделяющие последовательные аргументы правила Boost.Build, если вы не указываете значения этих аргументов.
Некоторые часто используемые функции и их возможные значения перечислены в табл. 1.15.
Табл. 1.15. Часто используемые функции Boost.Build
Функция | Значение | Эффект |
---|---|---|
include | Path | Определяет путь для поиска заголовочных файлов |
define | name=[value] | Определяет макрос |
threading | multi или single |
Включает или отключает поддержку потоков |
runtime-link | static или shared |
Определяет тип компоновки с библиотекой времени выполнения¹ |
variant | debug или release |
Запрашивает отладочную или окончательную сборку |
¹ См. рецепт 1.23.
Когда собирается целевой исполняемый файл, или цель, соответствующая статической или динамической библиотеке, файл, соответствующий этой цели, создается в директории, дочерней по отношению к директории, содержащей Jam-файл. Относительным путь этой директории зависит от инструментария и конфигурации сборки, но он всегда начинается с bin . Например, исполняемый файл из примера 1.8 может быть создан в директории bin/msvc/debug .
Для простоты я попросил вас создать Jam-файл из примера 1.8 в той же директории, в которой находится исходный файл hello.cpp . Однако в реальных проектах вам часто придется хранить исходные и двоичные файлы в различных директориях. В примере 1.8 Jam-файл можно поместить в любое место при условии, что вы укажете путь hello.cpp так, что он будет указывать на реальный файл hello.cpp .
Правило install
указывает Boost.Build скопировать один или несколько файлов, указанных как имена файлов или как имена главных целей, в указанное место. Вызов этого правила имеет вид, показанный в примере 1.10.
Пример 1.10. Вызов правила install
install имя-цели
: файлы
: требования
: сборка-по-умолчанию
: требования-к-использованию
;
Здесь имя-цели
— это имя объявляемой цели, а файлы
— это список из одного или более файлов или целей, которые требуется скопировать. Остальные аргументы — требования
, сборка-по-умолчанию
и требования-к-использованию
— имеют такие же значения, как и в примере 1.9.
Место, куда файлы должны быть скопированы, может указываться либо как имя цели, либо как значение свойства location
требований цели. Например, в примере 1.8 можно написать цель install
следующим образом.
install . : hello ;
Затем установка исполняемого файла выполняется так:
> bjam .
Однако метод, использованный в примере 1.8, предпочтителен, так как проще запомнить именованную цель, чем путь файла.
Наконец, давайте быстро взглянем на синтаксис командной строки bjam . Чтобы собрать цель xxx
, используя инструментарий по умолчанию, введите команду:
> bjam xxx
Чтобы собрать цель xxx
, используя инструментарий yyy
, введите команду:
> bjam xxx toolset= yyy
Чтобы собрать цель xxx
, используя версию vvv
инструментария yyy
, введите команду:
> bjam ххх toolset= yyy-vvv
Чтобы в командной строке указать использовать при сборке стандартную библиотеку zzz
, используйте синтаксис:
> bjam xxx stdlib= zzz
Чтобы собрать несколько целей одновременно, введите в командной строке несколько имен целей, а чтобы собрать все цели данного проекта, не указывайте целей. Следовательно, чтобы собрать и установить исполняемый файл из примера 1.9, просто введите:
> bjam
Чтобы удалить все файлы, созданные в процессе сборки, включая исполняемый файл, введите:
> bjam --clean
Свойство в виде < функция > значение
может быть указано в командной строке как функция=значение
.
Рецепты 1.2 и 1.15.
1.8. Сборка статической библиотеки с помощью Boost.Build
Вы хотите использовать Boost.Build для сборки статической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.1.
В директории, где вы хотите создать статическую библиотеку, создайте файл Jamroot . В файле Jamroot вызовите правило lib
, объявляющее целевую библиотеку, указав в качестве исходных файлов свои файлы .cpp и используя в качестве требования свойство
static
. Чтобы указать директорию поиска заголовочных файлов библиотеки, т. е. директорию, относительно которой должны разрешаться директивы include
для заголовочных файлов этой библиотеки, добавьте требование к использованию в виде путь
. Чтобы указать компилятору, где искать включенные заголовки, может потребоваться использовать несколько директив вида путь
. Наконец, в директории, содержащей Jamroot , запустите bjam , как описано в рецепте 1.7.
Например, чтобы собрать статическую библиотеку из исходных файлов, перечисленных в примере 1.1, ваш Jamroot может выглядеть как в примере 1.11.
Пример 1.11. Jam файл для сборки статической библиотеки libjohnpaul.lib или libjohnpaul.a
# Jamfile для проекта libjohnpaul
lib libjohnpaul
: # исходники
john.cpp paul.cpp johnpaul.cpp
: # требования
static
: # сборка-по-умолчанию
: # требования-к-использованию
..
;
Чтобы собрать библиотеку, введите:
> bjam libjohnpaul
Правило lib
используется для объявления цели, представляющей статическую или динамическую библиотеку. Как показано в примере 1.9, оно имеет такой же вид, что и правило exe. Использование требования ..
освобождает проект, который зависит от вашей библиотеки, от необходимости явно указывать в своих требованиях директорию заголовочных файлов вашей библиотеки. Требование
static
указывает, что ваша цель должна всегда собираться как статическая библиотека. Если вы хотите сохранить возможность сборки целевой библиотеки как статической и как динамической, опустите требование static
. Должна ли библиотека собираться как статическая или как динамическая, может быть указано в командной строке или в требованиях цели, которая зависит от целевой библиотеки. Например, если в примере 1.11 требование static
опустить, то чтобы собрать цель libjohnpaul
как статическую библиотеку, потребуется ввести команду:
> bjam libjohnpaul link=static
Интервал:
Закладка: