C++. Сборник рецептов - [21]
Когда собирается целевой исполняемый файл, или цель, соответствующая статической или динамической библиотеке, файл, соответствующий этой цели, создается в директории, дочерней по отношению к директории, содержащей 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 xxxtoolset=yyy
Чтобы собрать цель >xxx
, используя версию >vvv
инструментария >yyy
, введите команду:
>> bjam хххtoolset=yyy-vvv
Чтобы в командной строке указать использовать при сборке стандартную библиотеку >zzz
, используйте синтаксис:
>> bjamxxxstdlib=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
опустить, то чтобы собрать цель
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.