Сразу же после старта, рост. Строительный движок (b2) загружает код Jam, реализующий систему сборки. Для этого он ищет файл под названиемboost-build.jam, сначала в каталоге вызовов, затем в его родительском и так далее до корня файловой системы, и, наконец, в каталогах, указанных переменной среды BOOST_BUILD_PATH. При обнаружении файл интерпретируется и должен указать местоположение системы сборки, назвав правило бустер-строитель:
rule boost-build ( location ? )
Если местоположение является относительным путем, оно рассматривается как относительно каталогаboost-build.jam.. Каталог, указанный этим местоположением, и каталоги в BOOST_BUILD_PATH затем ищут файл под названиемbootstrap.jam, который, как ожидается, загрузит систему сборки. Эта компоновка позволяет системе сборки работать без каких-либо настроек командной строки или переменной среды. Например, если системные файлы сборки были расположены в каталоге «build-system/» в корне вашего проекта, вы можете разместитьboost-build.jamв корне проекта, содержащем:
boost-build build-system ;
В этом случае запускb2в любом месте дерева проекта автоматически найдет систему сборки.
По умолчаниюbootstrap.jamпосле загрузки некоторых стандартных определений загружает дваsite-config.jamиuser-config.jam.
Builtin rules
Этот раздел содержит список всех правил, которые могут быть использованы в Jamfile & #8212; оба правила, которые определяют новые цели и вспомогательные правила.
Check-target-buildsпозволяет условно использовать различные свойства в зависимости от того, строит ли какая-то метацель или нет. Это похоже на функциональность настройки скрипта в проектах автоинструментов. Функциональная подпись:
Эта функция может использоваться только при передаче требований или требований использования к правилу метацели. Например, чтобы сделать ссылку приложения на библиотеку, если она доступна, можно использовать следующее:
Правилоglobберет шаблон оболочки списка и возвращает список файлов в каталоге источника проекта, который соответствует шаблону. Например:
lib tools : [ glob *.cpp ] ;
Можно также передать второй аргумент— список исключений. Затем результат будет включать список файлов, исправляющих любой из шаблонов, и не совпадающих ни с одним из шаблонов исключения. Например:
глоб-деревопохоже наглоб, за исключением того, что оно работает рекурсивно из каталога содержащего Джамфила. Например:
ECHO [ glob-tree *.cpp : .svn ] ;
Вы будете печатать имена всех файлов C++ в вашем проекте. Правило.svnисключает шаблонglob-treeиз административных каталогов системы управления версиями Subversion.
Присваивает символический идентификатор проекта проекту на заданном пути. Это правило должно быть лучше документировано!
explicit
Правилоявноепринимает один параметр & #8212; список целевых имен. Названные цели будут четко обозначены и будут построены только в том случае, если они явно запрошены в командной строке или если их иждивенцы построены. Сравните это с обычными целями, которые строятся неявно, когда строится их содержащий проект.
always
Функциявсегдапринимает один параметр & #8212; список метацелей. Цели верхнего уровня, созданные названными метацелями, всегда будут считаться устаревшими. Рассмотрим этот пример:
Еслиаллозапрошено, то двоичный всегда будет повторно связан. Объектные файлы не будут повторно скомпилированы. Обратите внимание, что если сборкаHelloне запрашивается, например, вы указываете толькоByeв командной строке,Helloне будет повторно связана.
constant
Устанавливает константу проекта. Принимает два параметра: переменное имя и значение и делает указанное переменное имя доступным в этом Jamfile и любом детском Jamfiles. Например:
constant VERSION : 1.34.0 ;
path-constant
То же, чтопостоянная, за исключением того, что значение рассматривается как путь относительно местоположения Джамфила. Например, еслиb2вызывается в текущем каталоге, а Jamfile ввспомогательномподкаталоге имеет:
path-constant DATA : data/a.txt ;
Затем переменнаяDATAбудет установлена наhelper/data/a.txt, и еслиb2вызывается из каталогаhelper, то переменнаяDATAбудет установлена наdata/a.txt.
build-project
Потому что должен быть построен другой проект. Это правило принимает один параметр & #8212; имя каталога относительно содержащего Jamfile. Когда будет построен содержащий Jamfile, будет построен и проект, расположенный в этом каталоге. На данный момент параметром к этому правилу должно быть название каталога. Идентификатор проекта или общие целевые ссылки не допускаются.
test-suite
Это правило обесценивается и эквивалентнопсевдониму.
Builtin features
Этот раздел документирует функции, встроенные в Boost. Построй. Для функций с фиксированным набором значений этот набор предоставляется, причем значение по умолчанию указано первым.
variant
Функция, объединяющая несколько низкоуровневых функций, облегчает запрос общих конфигураций сборки.
Значениепрофильрасширяется до такого же, каквыпуск, плюс:
<profiling>on <debug-symbols>on
Пользователи могут определять свои собственные варианты сборки, используя правиловариантаизобщего модуля.
Примечание:Отладка времени выполнения в сборках отладки соответствует ожиданиям людей, привыкших к различным IDE.
link
Разрешенные значения:общие,статические
A feature controlling how libraries are built.
runtime-link
Разрешенные значения:общие,статические
Controls if a static or shared C/C++ runtime should be used. There
are some restrictions how this feature can be used, for example
on some compilers an application using static runtime should
not use shared libraries at all, and on some compilers,
mixing static and shared runtime requires extreme care. Check
your compiler documentation for more details.
threading
Разрешенные значения:одиночный,мульти
Controls if the project should be built in multi-threaded mode. This feature does not
necessary change code generation in the compiler, but it causes the compiler to link
to additional or different runtime libraries, and define additional preprocessor
symbols (for example, _MT on Windows and _REENTRANT on Linux).
How those symbols affect the compiled code depends on the code itself.
source
The <source>X feature has the same effect on
building a target as putting X in the list of sources. It is useful
when you want to add the same source to all targets in the project
(you can put <source> in requirements) or to conditionally
include a source (using conditional requirements, see the section called “Conditions and alternatives”). See also the <library>
feature.
library
This feature is almost equivalent to the <source>
feature, except that it takes effect only for linking. When you want
to link all targets in a Jamfile to certain library, the
<library> feature is preferred over
<source>X—the latter will add the library to
all targets, even those that have nothing to do with libraries.
dependency
Introduces a dependency on the target named by the value of this
feature (so it will be brought up-to-date whenever the target being
declared is). The dependency is not used in any other way.
implicit-dependency
Indicates that the target named by the value of this feature
may produce files that are included by the sources of the
target being declared. See the section called “Generated headers”
for more information.
use
Introduces a dependency on the target named by the value of this
feature (so it will be brought up-to-date whenever the target being
declared is), and adds its usage requirements to the build
properties
of the target being declared. The dependency is not used in any
other way. The primary use case is when you want the usage
requirements (such as #include paths) of some library
to be applied, but do not want to link to it.
Controls automatic generation of dll-path properties.
Разрешенные значения:истинно,ложно. Это свойство характерно для систем Unix. Если исполняемый файл построен сtrue, сгенерированный двоичный файл будет содержать список всех путей к используемым общим библиотекам. В результате исполняемый файл может быть запущен без изменения системных путей к общим библиотекам или установки библиотек к системным путям. Это очень удобно во время разработки. Пожалуйста, ознакомьтесь сFAQдля получения подробной информации. Обратите внимание, что на Mac OSX пути безоговорочно закодированы линкером, и невозможно отключить это поведение.
cflags, cxxflags, linkflags
The value of those features is passed without modification to the
corresponding tools. For cflags that is both the C and
C++ compilers, for cxxflags that is the C++ compiler
and for linkflags that is the linker. The features are
handy when you are trying to do something special that cannot be
achieved by a higher-level feature in Boost.Build.
include
Specifies an additional include path that is to be passed to C and
C++ compilers.
define
Specifies an preprocessor symbol that should be defined on the command
line. You may either specify just the symbol, which will be defined
without any value, or both the symbol and the value, separated by
equal sign.
warnings
The <warnings> feature controls the warning level
of compilers. It has the following values:
— отключает все предупреждения.
на- обеспечивает уровень предупреждения по умолчанию для инструмента.
все— позволяет все предупреждения.
Default value is all.
warnings-as-errors
The <warnings-as-errors> makes it possible to
treat warnings as errors and abort compilation on a warning. The
value on enables this behaviour. The default value is
off.
build
Допустимые значения:
Функциясборкииспользуется для условного отключения сборки цели. Еслиnoнаходится в свойствах при строительстве цели, строительство этой цели пропускается. В сочетании с условными требованиями это позволяет пропустить строительство некоторой цели в конфигурациях, где сборка, как известно, не работает.
tag
Функциятегаиспользуется для настройки имени сгенерированных файлов. Значение должно иметь форму:
@rulename
гдеимя правиладолжно быть наименованием правила со следующей подписью:
rule tag ( name : type ? : property-set )
Правило будет называться для каждой цели с именем по умолчанию, вычисленным Boost. Постройте, тип цели и набор свойств. Правило может либо вернуть строку, которая должна использоваться в качестве имени цели, либо пустую строку, в этом случае будет использоваться имя по умолчанию.
Наиболее типичным использованием функциитегаявляется кодирование свойств сборки или библиотечной версии в целевых именах библиотек. Вы должны позаботиться о том, чтобы вернуть непустую строку из правила тега только для типов, которые вас интересуют — в противном случае вы можете в конечном итоге изменить имена объектных файлов, сгенерированный файл заголовка и другие цели, для которых изменение имен не имеет смысла.
debug-symbols
Разрешенные значения:на,от.
Функцияdebug-символовопределяет, должны ли созданные объектные файлы, исполняемые файлы и библиотеки включать информацию об отладке. Как правило, значение этой функции неявно устанавливаетсявариантомфункции, но она может быть явно указана пользователем. Наиболее распространенным использованием является создание варианта выпуска с отладкой информации.
runtime-debugging
Разрешенные значения:на,от.
Функцияотладки времени выполненияопределяет, должны ли созданные объектные файлы, исполняемые файлы и библиотеки включать в себя поведение, полезное только для отладки, такое как утверждения. Как правило, значение этой функции неявно устанавливаетсявариантомфункции, но она может быть явно указана пользователем. Наиболее распространенным использованием является создание варианта выпуска с выводом отладки.
target-os
Операционная система, для которой должен быть создан код. Компилятор, который вы использовали, должен быть компилятором для этой операционной системы. Этот вариант вызывает рост. Создайте, чтобы использовать соглашения имен, подходящие для этой операционной системы, и соответствующим образом настройте процесс сборки. Например, с помощью gcc он контролирует, производятся ли импортные библиотеки для общих библиотек или нет.
Полный список возможных значений для этой функции: aix, bsd, cygwin, darwin, freebsd, hpux, iphone, linux, netbsd, openbsd, osf, qnx, qnxnto, sgi, solaris, unix, unixware, windows.
Архитектураопределяет общее семейство процессоров для генерации кода.
instruction-set
Разрешенные значения:зависят от используемого набора инструментов.
Набор командопределяет, для какого конкретного набора команд должен быть создан код. Код в целом может не работать на процессорах со старыми/разными наборами команд.
Пока буст. Сборка позволяет получить большой набор возможных значений для этих функций, независимо от того, работает ли данное значение, зависит от того, какой компилятор вы используете. См.раздел под названием “C++ Компиляторы”для деталей.
address-model
Допустимые значения:32,64.
адресная модельопределяет, должен ли 32-битный или 64-битный код генерироваться компилятором. Работает ли эта функция, зависит от используемого компилятора, его версии, настройки компилятора и значений архитектуры, набора командфункций. См.раздел под названием “C++ Компиляторы”для деталей.
Эта функция позволяет настроить компилятор C++ с максимальным параметром глубины ввода шаблона. Конкретные наборы инструментов могут обеспечивать или не обеспечивать поддержку этой функции в зависимости от того, предоставляют ли их компиляторы соответствующую опцию командной строки.
Примечание:Из-за некоторых внутренних деталей в текущем бусте. При построении реализации невозможно иметь функции, действительные значения которых являются положительным целым числом. В качестве обходного пути для этой функции был определен большой набор разрешенных значений, и, если требуется другой, пользователь может легко добавить его, назвав функцию. Продлить правило.
embed-manifest
Разрешенные значения:включено, выключено.
Эта функция специфична для набора инструментов msvc (см.раздел под названием & #8220; Microsoft Visual C++ & #8221;) и контролирует, должны ли файлы манифеста быть встроены в исполняемые файлы и общие библиотеки или размещены рядом с ними. Эта функция соответствует опции IDE, найденной в диалоге настроек проекта, в разделеСвойства конфигурации& #8594;Manifest Tool& #8594;Ввод и вывод& #8594;Встроенный манифест.
embed-manifest-file
Эта функция специфична для набора инструментов msvc (см.раздел под названием “Microsoft Visual C++”), и элементы управления, которые отображают файлы, должны быть встроены в исполняемые файлы и общие библиотеки. Эта функция соответствует опции IDE, найденной в диалоге настроек проекта, вConfiguration Properties& #8594;Manifest Tool& #8594;Input and Output& #8594;Additional Manifest Files.
Повышаю. Build поставляется с поддержкой большого количества компиляторов C++ и других инструментов. В этом разделе рассказывается, как использовать эти инструменты.
Перед использованием любого инструмента вы должны заявить о своем намерении и, возможно, указать дополнительную информацию о конфигурации инструмента. Это делается путем вызовас помощью правила, обычно в вашемuser-config.jam, например:
using gcc ;
Дополнительные параметры могут передаваться так же, как и для других правил, например:
using gcc : 4.0 : g++-4.0 ;
Варианты, которые могут быть переданы каждому инструменту, задокументированы в последующих разделах.
В этом разделе перечислены все повышения. Создавайте модули, поддерживающие компиляторы C++, и документируйте инициализацию каждого из них. Имя модуля поддержки компилятора также является значением для функции набора инструментов, которая может использоваться для явного запроса этого компилятора.
Модульgccинициализируется с использованием следующего синтаксиса:
using gcc : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если версия явно не указана, она будет автоматически обнаружена при запуске компилятора с опцией-v. Если команда не указана, двоичный файлg++будет искаться вPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
root
Указывает корневой каталог установки компилятора. Эта опция необходима только в том случае, если невозможно обнаружить эту информацию из команды компилятора— например, если указанная команда компилятора является пользовательским скриптом.
archiver
Указывает команду архиватора, которая используется для создания статических библиотек. Как правило, он автоматически обнаруживается с помощью опции gcc-print-prog-nameили по умолчанию доar, но в некоторых случаях вы можете переопределить его, например, использовать системную версию вместо той, которая включена в gcc.
ranlib
Указывает команду ranlib, которая используется для создания таблицы символов для статических библиотек. Обычно он автоматически обнаруживается с помощью gcc-print-prog-nameопции или по умолчанию доranlib, но в некоторых случаях вы можете переопределить его, например, для удобства использования системной версии вместо версии, включенной в gcc.
rc
Указывает команду компилятора ресурсов, которая будет использоваться с настраиваемой версией gcc. Эта настройка имеет смысл только для Windows и только в том случае, если вы планируете использовать файлы ресурсов. По умолчанию будут использоватьсяветров.
rc-type
Определяет тип компилятора ресурсов. Значение может быть либоветровдля компилятора ресурсов msvc, либоrcдля компилятора ресурсов borland.
In order to compile 64-bit applications, you have to specify
address-model=64, and the instruction-set
feature should refer to a 64 bit processor. Currently, those
include nocona, opteron,
athlon64 and athlon-fx.
Apple Darwin gcc
МодульDarwinподдерживает версию gcc, которая модифицирована и предоставлена Apple. Конфигурация по существу идентична конфигурации модуля gcc.
Набор инструментов Дарвина может генерировать так называемые «жирные» двоичные файлы & #8212; двоичные файлы, которые могут запускать поддержку более чем одной архитектуры или режима адреса. Чтобы создать двоичный код, который может работать как на процессорах Intel, так и на процессорах PowerPC, укажитеархитектуру = скомбинированную. Чтобы построить двоичную систему, которая может работать как в 32-битном, так и в 64-битном режимах, укажитеадрес-модель = 32_64. Если вы укажете оба этих свойства, будет создана «4-ходовая» жировая двоичная система.
Microsoft Visual C++
Модульmsvcподдерживает инструменты командной строки Microsoft Visual C++на Microsoft Windows. Поддерживаемые продукты и версии инструментов командной строки перечислены ниже:
Visual Studio 2010—10.0
Visual Studio 2008—9.0
Visual Studio 2005—8.0
Visual Studio .NET 2003—7.1
Visual Studio .NET—7.0
Visual Studio 6.0, Service Pack 5—6.5
Модульmsvcинициализируется с использованием следующего синтаксиса:
using msvc : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если версия явно не указана, вместо нее будет использоваться самая последняя версия, найденная в реестре. Если специальное значениевсепередается в качестве версии, все версии, найденные в реестре, будут настроены. Если версия указана, но команда не указана, двоичный компилятор будет искаться в стандартных путях установки для этой версии, за которыми следуетPATH.
Команда компилятора должна быть указана с помощью передних слэшей и процитирована.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
assembler
Командование, которое компилирует источники ассемблера. Если не указано,млбудет использоваться. После того, как будет выполнен сценарий настройки, команда будет вызвана и отрегулирована переменнаяPATH.
compiler
Команда, которая компилирует источники C и C++. Если не указано,clбудет использоваться. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
compiler-filter
Командование, через которое выводить выход запуска компилятора. Например, передать выход в STLfilt.
idl-compiler
Команда, которая компилирует файлы определения интерфейса Microsoft COM. Если не указано,будет использоваться средний. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
linker
Команда, которая связывает исполняемые файлы и динамические библиотеки. Если не указано,ссылкабудет использоваться. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
mc-compiler
Команда, которая компилирует файлы каталога сообщений Microsoft. Если не указано,mcбудет использоваться. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
resource-compiler
Команда, которая компилирует файлы ресурсов. Если не указано,rcбудет использоваться. После того, как будет выполнен сценарий настройки, команда будет вызвана и отрегулирована переменнаяPATH.
setup
Файловое имя скрипта настройки глобальной среды для запуска перед вызовом любого из инструментов, определенных в этом наборе инструментов. Не будет использоваться в случае, если конкретный скрипт целевой платформы был явно указан для текущей целевой платформы. Используемый скрипт настройки будет передан идентификатору целевой платформы (x86, x86_amd64, x86_ia64, amd64 или ia64) в качестве параметра. Если не указан сценарий по умолчанию, выбирается на основе используемого двоичного компилятора, например,vcvars32.batилиvsvars32.bat.
setup-amd64, setup-i386, setup-ia64
Имя файла скрипта настройки конкретной среды целевой платформы для запуска перед вызовом любого из инструментов, определенных в этом наборе инструментов. Если не указано, используется сценарий настройки глобальной среды.
64-bit support
Начиная с версии 8.0, Microsoft Visual Studio может генерировать двоичные файлы для 64-разрядного процессора, как 64-разрядные ароматы x86 (кодовое имя AMD64 / EM64T), так и Itanium (кодовое имя IA64). Кроме того, предусмотрены компиляторы, которые сами запускаются в 64-битном режиме, для лучшей производительности. Полный список конфигураций компилятора выглядит следующим образом (мы сокращаем AMD64/EM64T до AMD64):
32-разрядный хост x86, 32-разрядная цель x86
32-разрядный хост x86, 64-разрядная цель AMD64
32-разрядный хост x86, 64-разрядная цель IA64
64-разрядный хост AMD64, 64-разрядная цель AMD64
64-разрядный хост IA64, 64-разрядная цель IA64
32-разрядные хост-компиляторы могут использоваться всегда, даже на 64-разрядной Windows. Напротив, 64-разрядные компиляторы хостов требуют как 64-разрядного хост-процессора, так и 64-разрядной Windows, но могут быть быстрее. По умолчанию устанавливается только 32-разрядный хост, 32-разрядный компилятор целей, и дополнительные компиляторы должны быть установлены явно.
Чтобы использовать 64-битную компиляцию, вы должны:
Настройте компилятор как обычно. Если вы предоставляете путь к компилятору явно, предоставьте путь к 32-битному компилятору. Если вы попытаетесь указать путь к любому из 64-битных компиляторов, конфигурация не будет работать.
При компиляции используйтеадрес-модель=64для генерации кода AMD64.
Для создания кода IA64 используйте архитектуру=ia64
Компилятор (хост AMD64, целевой AMD64) будет использоваться автоматически, когда вы генерируете код AMD64 и работаете под управлением 64-разрядной Windows на AMD64. Компилятор IA64 никогда не будет использоваться, поскольку ни у кого нет машины IA64 для тестирования.
Считается, что цели AMD64 и EM64T по существу совместимы. Варианты компилятора/favor:AMD64и/favor:EM64T, которые принимаются только компиляторами таргетинга AMD64, заставляют генерируемый код настраиваться на определенный вкус 64-битного x86. Повышаю. Сборка будет использовать эти параметры в зависимости от значения функциинабора команд.
Windows Runtime support
Начиная с версии 11.0, Microsoft Visual Studio может создавать двоичные файлы для Windows Store и Phone в дополнение к традиционному рабочему столу Win32. Чтобы определить, какой API Windows установлен для таргетинга, используйте функциюwindows-api. Доступными опциями являютсярабочий стол,магазинилителефон. Если не указано,рабочий столбудет использоваться.
При использованиимагазинаилителефонауказанный набор инструментов определяет, какая версия Windows является целевой. Доступны следующие варианты:
Windows 8.0: toolset=msvc-11.0 windows-api=store
Windows 8.1: toolset=msvc-12.0 windows-api=store
Windows Phone 8.0: toolset=msvc-11.0 windows-api=phone
Windows Phone 8.1: toolset=msvc-12.0 windows-api=phone
Например, используйте следующее для создания Windows Store 8.1 с архитектурой ARM:
Обратите внимание, что при нацеливании на Windows Phone 8.1 версия 12.0 не включала скрипты настройки телефона vcvars. Их можно скачать отдельно изздесь.
Intel C++
Модулиintel-linuxиintel-winподдерживают компилятор командной строки Intel C++—LinuxиWindowsверсии соответственно.
Модуль инициализируется с использованием следующего синтаксиса:
using intel-linux : [version] : [c++-compile-command] : [compiler options] ;
или
using intel-win : [version] : [c++-compile-command] : [compiler options] ;
соответственно.
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда компилятора не указана, то Boost. Build будет искать вPATHдля исполняемогоicpc(на Linux) илиicc.exe(на Windows).
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
Версия Linux поддерживает следующие дополнительные опции:
root
Указывает корневой каталог установки компилятора. Эта опция необходима только в том случае, если невозможно обнаружить эту информацию из команды компилятора— например, если указанная команда компилятора является пользовательским скриптом.
HP aC++ compiler
Модульaccподдерживает компиляторHP aC++для операционной системы HP-UX.
Модуль инициализируется с использованием следующего синтаксиса:
using acc : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, двоичный кодaCCбудет искаться вPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
Borland C++ Compiler
Модульborlandподдерживает компилятор командной строки C++, включенный вC++ Builder 2006и более ранняя его версия, работающая на Microsoft Windows.
Поддерживаемые продукты перечислены ниже. Версия, сообщенная средствами командных строк, также указана для справки:
C++ Builder 2006—5.8.2
CBuilderX—5.6.5, 5.6.4 (в зависимости от выпуска)
CBuilder6—5.6.4
Бесплатные средства командной строки—5.5.1
Модуль инициализируется с использованием следующего синтаксиса:
using borland : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, поднимите. Build будет искать двоичный код, названныйbcc32вPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
Модуль инициализируется с использованием следующего синтаксиса:
using como-linux : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, поднимите. Build будет искать двоичный кодcomoвPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
Перед использованием Windows-версии компилятора необходимо настроить необходимые переменные среды на документацию компилятора. В частности, должна быть установлена переменнаяCOMO_XXX_INCLUDE, гдеXXXсоответствует используемому бэкэнд-компилятору C.
Code Warrior
Модульcwподдерживает компилятор CodeWarrior, первоначально выпущенный Metrowerks и в настоящее время разработанный Freescale. Повышаю. Build поддерживает только версии компилятора, предназначенные для процессоров x86. Все такие версии были выпущены Metrowerks до приобретения и больше не продаются. Последняя версия, которая работает, — 9.4.
Модуль инициализируется с использованием следующего синтаксиса:
using cw : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, поднимите. Build будет искать двоичную систему под названиемmwccпо умолчанию и вPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
root
Указывает корневой каталог установки компилятора. Эта опция необходима только в том случае, если невозможно обнаружить эту информацию из команды компилятора— например, если указанная команда компилятора является пользовательским скриптом.
setup
Команда, которая устанавливает переменные среды перед вызовом компилятора. Если не указано,cwenv.batвместе с двоичным компилятором будет использоваться.
compiler
Команда, которая компилирует источники C и C++. Если не указано,mwccбудет использоваться. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
linker
Команда, которая связывает исполняемые файлы и динамические библиотеки. Если не указано,mwldбудет использоваться. После того, как будет выполнена настройка скрипта и отрегулирована переменнаяPATH.
Модуль инициализируется с использованием следующего синтаксиса:
using hp_cxx : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, поднимите. Build будет искать двоичный файл под названиемhp_cxxвPATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
cflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.
cxxflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.
compileflags
Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.
linkflags
Указывает дополнительные параметры командной строки, которые будут переданы линкеру.
Sun Studio
МодульSunподдерживает компиляторыSun StudioC++ для ОС Solaris.
Модуль инициализируется с использованием следующего синтаксиса:
using sun : [version] : [c++-compile-command] : [compiler options] ;
Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.
Если команда не указана, поднимите. Build будет искать двоичный код под названиемCCв/opt/SUNWspro/binи вPATH.
При использовании этого компилятора на сложном коде C++, таком как библиотекаBoost C++, при инициализации модуляsunрекомендуется указать следующие параметры:
Повышаю. Build обеспечивает специальную поддержку некоторых сторонних библиотек C++, описанных ниже.
STLport library
БиблиотекаSTLportявляется альтернативной реализацией библиотеки времени выполнения C++. Повышаю. Построение поддерживает использование этой библиотеки на платформе Windows. Linux ограничен различными именами библиотек в каждой версии STLport и официально не поддерживается.
Перед использованием STLport необходимо настроить его вuser-config.jamс использованием следующего синтаксиса:
using stlport : [version] : header-path : [library-path] ;
Гдеверсияявляется версией STLport, например5.1.4,заголовки- это место, где можно найти заголовки STLport, ибиблиотеки- это место, где можно найти библиотеки STLport. Версия всегда должна быть предоставлена, а библиотечный путь должен быть предоставлен, если вы используете реализацию iostreams. Отметим, что STLport 5.* всегда использует собственную реализацию iostream, поэтому необходим библиотечный путь.
Когда STLport настроен, вы можете построить с STLport, запросивstdlib=stlportв командной строке.
zlib
Обеспечивает поддержку библиотекиzlib. zlib может быть настроен либо на использование предварительно компилированных двоичных файлов, либо на создание библиотеки из исходного кода.
zlib можно инициализировать с помощью следующего синтаксиса:
Если ни один из этих вариантов не указан, то вместо него будут использоваться переменные среды ZLIB_LIBRARY_PATH, ZLIB_NAME и ZLIB_INCLUDE.
Варианты строительства Злиба из источника:
source
Источник zlib. Недостатки переменной среды ZLIB_SOURCE.
tag
Устанавливаеттегсвойство корректировать имя файла библиотеки. Игнорируется при использовании предварительно составленных двоичных файлов.
build-name
Имя базы, используемое для компилируемой библиотеки. Игнорируется при использовании предварительно составленных двоичных файлов.
Примеры:
# Find zlib in the default system location
using zlib ;
# Build zlib from source
using zlib : 1.2.7 : <source>/home/steven/zlib-1.2.7 ;
# Find zlib in /usr/local
using zlib : 1.2.7 : <include>/usr/local/include <search>/usr/local/lib ;
# Build zlib from source for msvc and find
# prebuilt binaries for gcc.
using zlib : 1.2.7 : <source>C:/Devel/src/zlib-1.2.7 : <toolset>msvc ;
using zlib : 1.2.7 : : <toolset>gcc ;
Повышаю. Поддержка создания инструментов документации Boost описана ниже.
xsltproc
Чтобы использовать xsltproc, сначала нужно настроить его с помощью следующего синтаксиса:
using xsltproc : [xsltproc] ;
гдеxsltprocявляется исполняемым файлом xsltproc. Еслиxsltprocне указан, и переменная XSLTPROC установлена, будет использоваться значение XSLTPROC. В противном случае xsltproc будет искаться в PATH.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
xsl:param
Значения должны иметь формуимя=значение
xsl:path
Устанавливает дополнительный путь поиска для xi:include элементов.
catalog
Файл каталога, используемый для переписывания удаленных URL-адресов в локальную копию.
Модуль xsltproc содержит следующие правила. Обратите внимание, что они работают на джем-мишенях и предназначены для использования другим набором инструментов, таким как бустер, а не непосредственно пользователями.
Запускает xsltproc для создания нескольких выходов в каталоге.dirnameне используется, но существует по историческим причинам. Каталог результатов определяется из цели.
boostbook
Чтобы использовать бусбук, сначала нужно настроить его с помощью следующего синтаксиса:
using boostbook : [docbook-xsl-dir] : [docbook-dtd-dir] : [boostbook-dir] ;
docbook-xsl-dir— это каталог таблиц стилей DocBook XSL. Если это не предусмотрено, мы используем DOCBOOK_XSL_DIR из окружающей среды (при наличии) или смотрим в стандартных местах. В противном случае мы позволяем процессору XML загружать таблицы стилей удаленно.
docbook-dtd-dir— это каталог DocBook DTD. Если нет, мы используем DOCBOOK_DTD_DIR Из окружающей среды (при наличии) или в стандартных местах. В противном случае мы позволяем процессору XML загружать DTD удаленно.
boostbook-dir— каталог BoostBook с субдирами DTD и XSL.
Модуль бустерной книги зависит от xsltproc. Для pdf или ps выход также зависит от fop.
Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:
Создание доксигенной мишени. Если целевое имя заканчивается на .html, это сгенерирует каталог html. В противном случае он будет генерировать BoostBook XML.
quickbook
Модуль Quickbook предоставляет генератор для преобразования из Quickbook в BoostBook XML.
Чтобы использовать Quickbook, сначала нужно настроить его с помощью следующего синтаксиса:
using quickbook : [command] ;
командаявляется исполняемой книгой. Если это не указано, поднимите. Постройка будет компилироваться из источника. Если он не может найти источник, он будет искать исполняемый файл в PATH.
fop
Модуль fop предоставляет генераторы для преобразования объектов форматирования XSL в Postscript и PDF.
Чтобы использовать fop, сначала нужно настроить его с помощью следующего синтаксиса:
using fop : [fop-command] : [java-home] : [java] ;
fop-command— команда для запуска fop. Если это не указано, поднимите. Build будет искать его в PATH и FOP_ Домой.
Либоjava-home, либоjavaможно использовать для указания, где найти java.
В этом разделе описаны модули, предоставляемые Boost. Построй. Правило импорта позволяет использовать правила из одного модуля в другом модуле.
modules
Модульопределяет базовую функциональность для модулей обработки.
Модуль определяет ряд правил, которые могут быть использованы в других модулях. Модули могут содержать код на верхнем уровне для инициализации модуля. Этот код выполняется при первой загрузке модуля.
Note
Jamfile - это специальный модуль, который управляется системой сборки. Хотя они не могут быть загружены непосредственно пользователями, другие функции модулей по-прежнему полезны для Jamfiles.
Каждый модуль имеет свои собственные пространства имен для переменных и правил. Если два модуля A и B используют переменную под названием X, каждый из них получает свою собственную копию X. Они никак не будут мешать друг другу. Аналогичным образом, импорт правил в один модуль не влияет на любой другой модуль.
Каждый модуль имеет две специальные переменные.$(__file__)содержит имя файла, из которого был загружен модуль, и$(__name__)содержит имя модуля.
Note
$(__file__)не содержит полного пути к файлу. Если вам это нужно, используйтемодули.binding.
правилосвязываниеназвание модуля
Возвращает связывание файловой системы данного модуля.
Например, модуль может получить свое собственное местоположение:
Устанавливает модульное локальное значение переменной.
Например, установить переменную в глобальном модуле:
модули.poke:ZLIB_INCLUDE:/usr/local/include;
правилозаглядыватьмодуль-имя ?:переменные +]
Возвращает модульное локальное значение переменной.
Например, читать переменную из глобального модуля:
локальныйZLIB_INCLUDE=:ZLIB_INCLUDE;
правилоcall-inмодуль-имя ?:имя-правило args *:*
Вызовите данное правило локально в данном модуле. Используйте это для правил, принимающих имена правил в качестве аргументов, чтобы принятое правило могло быть использовано в контексте абонента правила (например, если правило обращается к модулю globals или является локальным правилом).
Примечание
Правила, называемые таким образом, могут принимать не более 8 параметров.
Загрузите указанный модуль, если он еще не загружен.
модульное имя
Название модуля для загрузки.
имя файла
(частичный) путь к файлу; по умолчанию$ [модуль-имя].jam
поиск
Каталоги для поиска имени файла. Дефолты до$(BOOST_BUILD_PATH)
правилоимпортмодульные имена +:правила-опт *:переименование-опт *]
Загрузите указанный модуль и имена правил импорта в текущий модуль. Любые членыправил-оптовбудут доступны без квалификации в модуле абонента. Любые членыrename-optбудут приниматься в качестве имен правил в модуле абонента вместо имен, которые они имеют в импортируемом модуле. Еслиправила-opt = '*', все правила из указанного модуля импортируются в модуль вызывающего абонента. Еслипереименовать в, он должен иметь такое же количество элементов, какправила-опта.
Примечание
Правило импортадоступно без квалификации во всех модулях.
Определить вывезенные копии в$(целевой модуль)всех правил, вывезенных из$(исходный модуль). Также сделайте их доступными в глобальном модуле с квалификацией, так что это так же, как если бы правила были определены первоначально в$
.
path
Выполняет различные дорожные манипуляции. Пути всегда находятся в «нормализованном» представлении. В ней путь может быть либо:
, или
['/'] [ ( '..' '/' )* (token '/')* token ]
На простом английском языке путь может быть укоренен,'..'элементы допускаются только в начале, и он никогда не заканчивается в слэше, кроме пути, состоящего только из слэша.
правилосделатьродным
Преобразует родной путь в нормализованную форму.
правилородноепуть
Создает родное представление о пути.
правилоуходит корнямипуть
Тесты, если путь укоренен.
правилоимеет родителяпуть
Тесты, если путь имеет родителя.
правилоимя основанияпуть
Возвращает путь без каких-либо компонентов каталога.
правилородитель[путь]
Возвращает родительский каталог пути. Если родителя нет, выдается ошибка.
правилообратно
Возвращаетпуть2так, чтоприсоединяются к пути2=".. Путь может не содержать«..»элемента или быть укорененным.
правилоприсоединитьэлементы +
Конкатенирует элементы пройденного пути. Создает ошибку, если коренится какой-либо элемент, отличный от первого. Пропускает любые пустые или неопределенные элементы пути.
правилокоренькорень пути]
Еслипутьотносительный, он коренится вкорень. В противном случае она неизменна.
правилоpwd
Возвращает текущий рабочий каталог.
правилошарdirs *:шаблоны +:исключают-паттерны *]
Возвращает список файлов, соответствующих заданному шаблону в указанном каталоге. Оба каталога и шаблоны поставляются в качестве переносных путей. Каждый паттерн должен быть неабсолютным путем и не содержать «» или «..» элементов. Каждый разделённый слэш-элемент рисунка может содержать следующие специальные символы:
'?' соответствует любому символу
'*' соответствует произвольному числу символов
Файл $(d)/e1/e2/e3 (где 'd' находится в $(dirs)) соответствует шаблону p1/p2/p3, если и только если e1 соответствует p1, e2 соответствует p2 и так далее. Например:
Рекурсивная версияшара. Создает шар файлов, а также ищет в подкаталогах данных корней. Факультативный набор шаблонов исключения будет отфильтровывать соответствующие записи из результата. Исключения также применяются к сканированию подкаталогов, так что каталоги, которые соответствуют шаблонам исключения, не будут искаться.
правилосуществует
Возвращается, если указанный файл существует.
правиловсе-родителипуть:верхний_лимит ?:cwd ?]
Выясните абсолютное название пути и верните список всех родителей, начиная с непосредственного. Родителей возвращают в качестве относительных имен. Есливерхний пределуказан, каталоги выше него будут сокращены.
Поискшаблоновв родительских каталогахdir, до и включаяверхний предел, если он указан, или до корня файловой системы иначе.
правилоотносительноеродитель-ребенок:нет ошибки ?
Предполагая, чторебенокявляется подкаталогомродитель, возвращайте относительный путь отродителькребенок.
правилоотносительнопути1 пути2
Возвращает минимальный путь к пути 2, который является относительным путем 1.
правилопрограммный путь
Возвращает список путей, которые используются операционной системой для поиска программ.
правилоmakedirsпуть
Создает каталог и все родительские каталоги, которые еще не существуют.
regex
Содержит правила обработки строк с использованием регулярных выражений.
«x*»соответствует узору«x»ноль или более раз.
"x+"Соответствует"x"один или несколько раз.
"x?"матчи"x"ноль или один раз.
"[abcd]"соответствует любому из персонажей"a","b","c"и"d". В этом случае"[a-z]"соответствует любому персонажу между"a"и"z"."[^abc]"соответствует любому персонажу, который не является"a","b"или"c".
"x|y"соответствует либо образцу"x", либо образцу"y"
.
[x]соответствует«x»и захватывает его.
"^"соответствует началу струны.
«$»соответствует концу струны.
«<» соответствует началу слова.
«\>» соответствует концу слова.
правилоразделениесепаратор струн
Возвращает список следующих подстрок:
от начала до первого появлениясепаратораили до конца
между каждым появлениемсепаратораи следующим событием
от последнего появлениясепараторадо конца.
Если сепаратор отсутствует, результат будет содержать только один элемент.
правилосплит-листсписок *:сепаратор]
Возвращает сцепленные результаты примененияregex.splitк каждому элементу списка с использованием шаблона разделителя.
правилосоответствиерисунок:строка:индексы *]
Матчстрокапротиврисунок, и вернуть элементы, указанныеиндексы.
Различные полезные функции списка. Обратите внимание, что алгоритмы в этом модуле выполняются в основном в пространстве имен вызывающего абонента, так что локальные правила могут использоваться в качестве функциональных объектов. Также обратите внимание, что большинство предикатов могут быть многоэлементными списками. В этом случае все, кроме первого элемента, предрасположены к первому аргументу, который передается правилу, названному первым элементом.
правилофильтрпредикат +:последовательность *]
Возврат элементовe$(последовательность), для которых$(предикат) eимеет ненулевое значение.
правиловыборка самого высокого рангаэлементы *:разряды *
Возвращает всеэлементы, для которых соответствующий элемент в параллельном спискерангравен максимальному значению вранг.
type
Занимается декларацией типа цели и определяет класс цели, который поддерживает типизированные цели.
правилорегистртип:суффиксы *:базового типа ?]
Регистрирует целевой тип, возможно полученный избазового типа. Предоставляя список суффиксов здесь, ярлык для отдельного вызова правила регистр-суффиксовс заданными суффиксами и правилас заданным целевым суффиксомс первым заданным суффиксом.
правилорегистровые суффиксысуффиксы +:тип]
Указывает, что файлы с суффиксом изсуффиксыпризнаются целями типатип. Выдает ошибку, если для любого из суффиксов уже указан другой тип.
правилозарегистрированотип
Зарегистрированы возвраты истинного типа iff.
правилоподтверждаеттип
Выдает ошибку, если типнеизвестен.
правилоset-scannerтип:сканер
Установите класс сканера, который будет использоваться для этого типа.
Устанавливает суффикс файла, который будет использоваться при генерации цели типас заданными свойствами. Можно называть без свойств, если для типауже не указан суффикс. Параметрсуффиксаможет быть пустой строкой"", чтобы указать, что суффикс не должен использоваться.
Обратите внимание, что это не приводит к тому, что файлы с суффиксомавтоматически распознаются как файлы типа. Два разных типа могут использовать один и тот же суффикс для своих сгенерированных файлов, но только один тип может быть автоматически обнаружен для файла с этим суффиксом. Пользователь должен четко указать, какой из них использует правило регистровых суффиксов.
Устанавливает префикс цели, который должен использоваться при генерации целей типас заданными свойствами. Можно вызвать с пустыми свойствами, если еще не указан префикс длятипа.
Параметрпрефиксаможет быть пустой строкой"", чтобы указать, что префикс не должен использоваться.
Пример использования: названия библиотек используют префикс«lib»на unix.
Возвращает префикс, используемый при генерации файла типас заданными свойствами.
правилотипимя файла
Возвращает тип файла с указанием его имени. Если в имени файла несколько точек, попробуйте каждый суффикс. Например, для названия "file.so.1.2" будут использоваться суффиксы "2", "1" и "so".
Возвращает считываемое пользователем имя для этой цели.
правилопорождаютнабор свойств
Генерирует виртуальные мишени для этой абстрактной мишени с использованием заданных свойств, если только цель не требует другого значения некоторой функции. Это абстрактный метод, который должен быть перегружен производными классами.
При успехе возвращается:
свойство, установленное с требованиями использования, которые должны применяться к иждивенцам
Список созданных виртуальных целей, которые могут быть пустыми.
Еслинабор свойствпуст, выполняет сборку по умолчанию этой цели способом, специфичным для производного класса.
Сохранение перечня основных целей этого проекта и их построение.
порождают
Переопределенияabstract-target.generate. Создание виртуальных целей для всех целей, содержащихся в этом проекте.
При успехе возвращается:
свойство, установленное с требованиями использования, которые должны применяться к иждивенцам
Список созданных виртуальных целей, которые могут быть пустыми.
правилобилд-дир
Возвращает корневой каталог сборки проекта.
правилоосновной цели[название]
Возвращаетосновной целиклассовый экземпляр, соответствующийимени. Позвонить можно только после полной загрузки проекта.
правилоимеет основную цель
Возвращает, существует лиосновная цельс указанным именем. Позвонить можно только после полной загрузки проекта.
правилонайтиid:неошибка?]
Найти и вернуть цель с указанным идентификатором, обработанным относительно себя. Id может указывать либо цель, либо имя файла с приоритетом цели. Может сообщать об ошибке или ничего не возвращать, если цель не найдена в зависимости от параметрабез ошибок.
Основная цельпредставляет собой названную цель верхнего уровня в Jamfile.
правилогенерируетнабор свойств
Overridesabstract-target.generate. Выберите альтернативу для этой основной цели, найдя все альтернативы, требования которых удовлетворяютсянабором свойстви выбрав тот, который имеет самый длинный набор требований. Возвращает результат вызовагенерироватьна эту альтернативу.
При успехе возвращается:
свойство, установленное с требованиями использования, которые должны применяться к иждивенцам.
Список созданных виртуальных целей, которые могут быть пустыми.
Реализует наиболее стандартный способ построения основной целевой альтернативы из источников. Позволяет источникам быть файлами или другими основными целями и обрабатывает генерацию этих целей зависимости.
правило__init__:название:источники:требования *:требования по умолчанию *:требования к использованию
Название цели
проект
Проект, в котором заявлена цель.
правилогенерируетнабор свойств
Overridesabstract-target.generate. Определяет свойства конечной сборки, генерирует источники и вызывает конструкцию. Этот метод не следует переоценивать.
При успехе возвращается:
свойство с требованиями использования, которые должны применяться к иждивенцам.
Список созданных виртуальных целей, которые могут быть пустыми.
правилоконструкциюназвание:исходные цели *:набор свойств
Конструирует виртуальные цели для этой абстрактной цели. Возвращает набор свойств и список виртуальных целей. Они должны быть перегружены производными классами.
Внедрениеbasic-target.construct. Попытки создания мишени правильного типа с использованием генераторов, соответствующих заданномуимущественному набору. Возвращаетнабор свойств, содержащий требования к использованию и список виртуальных целей.
Примечание
Эта функция вызывается автоматическиbasic-target.generateи не должна вызываться непосредственно пользователями.
Существует 1<->1 соответствие между идентичностью и ценностью. Нет двух одинаковых классов. Чтобы сохранить это свойство, правило «property-set.create» должно использоваться для создания новых экземпляров. Случаи неизменны.
Общий обзор процесса сборки был дан в пользовательской документации. В этом разделе приведены дополнительные детали и некоторые конкретные правила.
Чтобы подытожить, построение цели с конкретными свойствами включает в себя следующие шаги:
применение сборки по умолчанию,
Выбор основной целевой альтернативы
определение «общих» свойств
цели строительства, указанные в списке источников и свойствах зависимости,
Добавление требований к использованию при построении зависимостей к «общим» свойствам
построение цели с использованием генераторов,
вычисление требований к использованию, подлежащих возврату.
Alternative selection
При наличии нескольких альтернатив необходимо выбрать одну из них. Процесс заключается в следующем:
Для каждой альтернативыусловиеопределяется как набор базовых свойств в требованиях. [Примечание: возможно, было бы лучше четко указать условие, как и в условных требованиях].
Альтернатива жизнеспособна только в том случае, если все свойства в состоянии присутствуют в запросе на строительство.
Если есть жизнеспособная альтернатива, то она выбрана. В противном случае делается попытка найти одну из лучших альтернатив. Альтернатива a лучше, чем другая альтернатива b, если набор свойств в состоянии b является строгим подмножеством набора свойств состояния a. Если есть одна жизнеспособная альтернатива, которая лучше всех остальных, она выбрана. В противном случае сообщается об ошибке.
Determining common properties
«Общие» свойства — это несколько искусственный термин. Это промежуточный набор свойств, из которого получаются как запрос на строительство зависимостей, так и свойства для построения цели.
Поскольку сборка по умолчанию и альтернативы уже обрабатываются, у нас есть только два входа: запросы на сборку и требования. Вот правила об общих свойствах.
Несвободная функция может иметь только одно значение
Неусловное свойство в требовании всегда присутствует в общих свойствах.
Имущество в запросе на строительство присутствует в общих свойствах, если (2) не указано иное.
Если запрос на строительство или требования (безусловные или условные) включают расширяемое свойство (композитное или свойство с заданной субфункцией), поведение эквивалентно явному добавлению всех расширенных свойств для запроса на строительство или требований.
Если требования включают условное свойство, и условие этого свойства истинно в контексте общих свойств, то условное свойство должно быть и в общих свойствах.
Если другие правила не дают значения для признака, он имеет значение по умолчанию в общих свойствах.
Эти правила являются декларативными, они не определяют, как вычислить общие свойства. Тем не менее, они предоставляют достаточно информации для пользователя. Важным моментом является обработка условных требований. Условие может быть удовлетворено либо собственностью в запросе на строительство, либо неусловными требованиями, либо даже другим условным имуществом. Например, следующий пример работает так, как ожидалось:
exe a : a.cpp
: <toolset>gcc:<variant>release
<variant>release:<define>FOO ;
Target Paths
Несколько факторов определяют местоположение конкретной цели файла. Все файлы в проекте строятся под bin каталога, если это не переопределяется атрибутом проекта build-dir. Под бином находится путь, который зависит от свойств, используемых для построения каждой цели. Этот путь однозначно определяется всеми несвободными, неслучайными свойствами. Например, учитывая набор свойств, содержащий:gcc4.6.1debugall_DEBUG/usr/local/includestatic, путь будет gcc-4.6.1/debug/link-static.является случайной особенностью ииявляются бесплатными функциями, поэтому они не влияют на путь.
Иногда дорожки, создаваемые Boost. Строительство может стать чрезмерно долгим. Есть несколько вариантов командной строки, которые могут помочь в этом. Сокращенные пути уменьшают каждый элемент до не более пяти символов. Например, линковая статика становится lnk-sttc. Опция --hash уменьшает путь к одному каталогу с помощью хэша MD5.
Есть две особенности, которые влияют на каталог сборки. Функцияполностью перекрывает каталог сборки по умолчанию. Например,
exe a : a.cpp : <location>. ;
Все файлы, созданныеaв каталоге Jamfile. Это, как правило, не рекомендуется, так как это исключает варианты сборки.
Функциядобавляет префикс к пути в каталоге сборки проекта. Например,
exe a : a.cpp : <location-prefix>subdir ;
будет создавать файлы дляaв bin/subdir/gcc-4.6.1/debug
Функцияявляется нормализованным (независимым от набора инструментов) аспектом конфигурации сборки, например, включена ли накладка. Имена признаков не могут содержать символ>.
Каждый признак в конфигурации сборки имеет одно или более связанныхзначениеs. Значения признаков для несвободных признаков могут не содержать символов<,:или=. Значения функций для бесплатных функций могут не содержать символ<.
Асубфункцияявляется признаком, который существует только в присутствии его родительского признака и чья идентичность может быть получена (в контексте его родителя) из его значения. Родитель субподряда никогда не может быть другим субподрядом. Таким образом, особенности и их подвиды образуют двухуровневую иерархию.
Aстоимостная струнадля признакаFпредставляет собой строку формыстоимостно-субзначение1-субзначение2...-субзначениеN, гдезначениеявляется юридическим значением дляFисубзначение1...субзначениеNявляются юридическими значениями некоторых изF's субкачеств. Например, свойстваgcc3.0.1могут быть выражены более лаконично с использованием строки значений, какgcc-3.0.1.
набор свойствпредставляет собой набор свойств (т.е. коллекцию без дубликатов), например:gccstatic.
Путьсвойствпредставляет собой набор свойств, элементы которого соединены в одну строку, разделенную срезами. Представление пути свойств предыдущего примера будетgcc/static.
спецификация сборкиявляется набором свойств, который полностью описывает набор функций, используемых для построения цели.
Property Validity
Длябесплатныхфункций все значения действительны. Для всех других функций действительные значения явно указаны, и система сборки сообщит об ошибке для использования недействительного значения функции. Валидность субсобственности может быть ограничена таким образом, что определенные значения действительны только при наличии определенных других субсобственностей. Например, можно указать, что свойствоmingwдействительно только в присутствии2.95.2.
Feature Attributes
Каждая функция имеет набор из нуля или более следующих атрибутов. Функциональные атрибуты - это низкоуровневые описания того, как система сборки должна интерпретировать значения функции, когда они появляются в запросе на сборку. Мы также ссылаемся на атрибуты свойств, так чтослучайноесвойство, например, является свойством, которое имеетслучайноеатрибут.
случайный
Предполагается, что случайные характеристики вообще не влияют на продукцию сборки. Как следствие, система сборки может использовать один и тот же файл для целей, спецификация сборки которых отличается только случайными особенностями. Функция, которая контролирует уровень предупреждения компилятора, является одним из примеров вероятной случайной функции.
Предполагается, что неслучайные функции влияют на продукты сборки, поэтому файлы для целей, спецификация сборки которых отличается неслучайными функциями, размещаются в разных каталогах, как описано вразделе под названием “Target Paths”.
размножаются
Особенности этого рода распространяются на зависимости. То есть, если основная цельпостроена с использованием распространяемого имущества, системы сборки пытаются использовать то же самое свойство при построении любой из его зависимостей как часть этой главной цели. Например, когда запрашивается оптимизированный исполняемый файл, обычно требуется, чтобы он был связан с оптимизированными библиотеками. Таким образом,<оптимизация>функция распространяется.
свободный
Большинство функций имеют конечный набор разрешенных значений и могут принимать только одно значение из этого набора в данной спецификации сборки. Свободные функции, с другой стороны, могут иметь несколько значений за раз, и каждое значение может быть произвольной строкой. Например, возможно одновременное определение нескольких символов препроцессора:
NDEBUG=1HAS_CONFIG_H=1
необязательно
Необязательная функция - это функция, которая не требуется для отображения в спецификации сборки. Каждая необязательная несвободная функция имеет значение по умолчанию, которое используется, когда значение для функции не указано иначе, либо в требованиях цели, либо в запросе на сборку пользователя. [Значение по умолчанию функции определяется первым значением, перечисленным в объявлении функции. - переместить это в другое место - dwa
Симметричная
Обычно функция генерирует субвариантную директорию только тогда, когда ее значение отличается от значения по умолчанию, что приводит к асимметричной структуре подвариантной директории для определенных значений функции. Симметричная функция всегда генерирует соответствующий подвариантный каталог.
путь
Значение признака пути определяет путь. Путь рассматривается относительно каталога Jamfile, где используется функция пути, и переводится соответствующим образом системой сборки, когда сборка вызывается из другого каталога
.
имплицитно
Только значения неявных признаков определяют признак. Например, пользователю не требуется писать «gcc», а можно просто написать «gcc». Имплицитные имена признаков также не появляются в вариантах путей, хотя значения имеют. Таким образом: bin/gcc/... в отличие от bin/toolset-gcc/.... Обычно таких функций должно быть всего несколько, чтобы избежать возможных столкновений имен.
Композит
Композитные признаки фактически соответствуют группам свойств. Например, вариант сборки является составной особенностью. При генерации целей из набора свойств сборки составные признаки рекурсивно расширяются идобавляютк набору свойств сборки, поэтому правила могут найти их при необходимости. Некомпозитные несвободные функции перекрывают компоненты композитных функций в наборе свойств сборки.
зависимость
Значение функции зависимости является целевой ссылкой. При использовании для построения основной цели значение функции зависимости рассматривается как дополнительная зависимость.
Например, функции зависимости позволяют утверждать, что библиотека А зависит от библиотеки В. В результате, когда приложение будет ссылаться на A, оно также будет ссылаться на B. Определение В как зависимости от А отличается от добавления В к источникам А.
Функции, которые не являются ни бесплатными, ни случайными, называютсябазовымифункциями.
Feature Declaration
Интерфейс деклараций функций низкого уровня - это правилофункциииз модуляфункции:
Допустимые значения функции могут быть расширены с помощью правилаfeature.extend.
Property refinement
Когда цель с определенными свойствами запрашивается, и эта цель требует некоторого набора свойств, необходимо найти набор свойств для использования для строительства. Этот процесс называетсяуточнение свойстви осуществляется по этим правилам.
Каждое свойство в требуемом наборе добавляется к исходному набору свойств.
Если исходный набор свойств включает в себя свойство с другим значением несвободного признака, это свойство удаляется.
Conditional properties
Иногда желательно применять определенные требования только для конкретной комбинации других свойств. Например, один из компиляторов, который вы используете, выдает бессмысленное предупреждение, которое вы хотите подавить, передав ему опцию командной строки. Вы не хотите передавать эту опцию другим компиляторам. Условные свойства позволяют сделать именно это. Их синтаксис:
property ( "," property ) * ":" property
Например, вышеуказанная проблема будет решена путем:
Эта грамматика позволяет распознавать некоторые элементы как
Project id (в этот момент все проектные идентификаторы начинаются со слэша).
имя цели, объявленное в текущем Jamfile (обратите внимание, что целевые имена могут включать слэш).
обычный файл, обозначаемый абсолютным именем или именем относительно местоположения источника проекта.
Для определения реального значения производится проверка, существует ли проект-ид по указанному имени, а затем существует ли основная цель этого имени. Например, действительными целевыми идентификаторами могут быть:
a -- target in current project
lib/b.cpp -- regular file
/boost/thread -- project "/boost/thread"
/home/ghost/build/lr_library//parser -- target in specific project
Обоснование:Цель отделена от проекта специальным сепаратором (не просто слэш), потому что:
Он подчеркивает, что проекты и цели — это разные вещи.
Позволяет иметь основные целевые имена со слэшами.
Target reference is used to
specify a source target, and may additionally specify desired
properties for that target. It has this syntax:
Это может привести к тому, что библиотекаcmdline, оптимизированная для пространства, будет связана, даже если исполняемый компиляторпостроен с оптимизацией скорости.
Статья Reference раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 45. Boost.Build User Manual может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.