Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Reference

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 45. Boost.Build User Manual

BoostC++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Reference

General information

Initialization

Сразу же после старта, рост. Строительный движок (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; оба правила, которые определяют новые цели и вспомогательные правила.

exe

Создает исполняемый файл. См.раздел под названием “Программы”.

lib

Создает библиотечный файл. См.раздел под названием “ Библиотеки”.

install

Устанавливает встроенные цели и другие файлы. См.раздел под названием “Установка”.

alias

Создает псевдоним для других целей. См.раздел под названием “Alias”.

unit-test

Создает исполняемый файл, который будет автоматически запущен. См.раздел под названием & #8220; Тестирование & #8221;.

compile, compile-fail, link, link-fail, run, run-fail

Специализированные правила тестирования. См.раздел под названием & #8220; Тестирование & #8221;.

check-target-builds

Check-target-buildsпозволяет условно использовать различные свойства в зависимости от того, строит ли какая-то метацель или нет. Это похоже на функциональность настройки скрипта в проектах автоинструментов. Функциональная подпись:

rule check-target-builds ( target message ? : true-properties * : false-properties * )
        

Эта функция может использоваться только при передаче требований или требований использования к правилу метацели. Например, чтобы сделать ссылку приложения на библиотеку, если она доступна, можно использовать следующее:

exe app : app.cpp : [ check-target-builds has_foo "System has foo" : <library>foo : <define>FOO_MISSING=1 ] ;
        

Например, правило псевдонима может использоваться для консолидации вариантов конфигурации и предоставления их другим метацелям, например:

alias foobar : : : : [ check-target-builds has_foo "System has foo" : <library>foo : <library>bar ] ;
        
obj

Создает объектный файл. Полезно, когда один исходный файл должен быть составлен со специальными свойствами.

preprocessed

Создает предварительно обработанный исходный файл. Приведенные аргументы соответствуютобщему синтаксису.

glob

Правилоglobберет шаблон оболочки списка и возвращает список файлов в каталоге источника проекта, который соответствует шаблону. Например:

lib tools : [ glob *.cpp ] ;
        

Можно также передать второй аргумент— список исключений. Затем результат будет включать список файлов, исправляющих любой из шаблонов, и не совпадающих ни с одним из шаблонов исключения. Например:

lib tools : [ glob *.cpp : file_to_exclude.cpp bad*.cpp ] ;
        

glob-tree

глоб-деревопохоже наглоб, за исключением того, что оно работает рекурсивно из каталога содержащего Джамфила. Например:

ECHO [ glob-tree *.cpp : .svn ] ;
        

Вы будете печатать имена всех файлов C++ в вашем проекте. Правило.svnисключает шаблонglob-treeиз административных каталогов системы управления версиями Subversion.

project

Объявляет идентификатор проекта и атрибуты, включая требования проекта. См.раздел под названием “Проекты”.

use-project

Присваивает символический идентификатор проекта проекту на заданном пути. Это правило должно быть лучше документировано!

explicit

Правилоявноепринимает один параметр & #8212; список целевых имен. Названные цели будут четко обозначены и будут построены только в том случае, если они явно запрошены в командной строке или если их иждивенцы построены. Сравните это с обычными целями, которые строятся неявно, когда строится их содержащий проект.

always

Функциявсегдапринимает один параметр & #8212; список метацелей. Цели верхнего уровня, созданные названными метацелями, всегда будут считаться устаревшими. Рассмотрим этот пример:

exe hello : hello.cpp ;
exe bye : bye.cpp ;
always hello ;

Еслиаллозапрошено, то двоичный всегда будет повторно связан. Объектные файлы не будут повторно скомпилированы. Обратите внимание, что если сборка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

Функция, объединяющая несколько низкоуровневых функций, облегчает запрос общих конфигураций сборки.

Разрешенные значения:отладка,выпуск,профиль.

,, [скрыто], [скрыто], [скрыто]

<optimization>off <debug-symbols>on <inlining>off <runtime-debugging>on

Значениевыпускрасширяется до

<optimization>speed <debug-symbols>off <inlining>full <runtime-debugging>off

Значениепрофильрасширяется до такого же, каквыпуск, плюс:

<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.
dll-path
Specify an additional directory where the system should look for shared libraries when the executable or shared library is run. This feature only affects Unix compilers. Please see the section called “ Why are the dll-path and hardcode-dll-paths properties useful? ” in the section called “Frequently Asked Questions” for details.
hardcode-dll-paths

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.

См.раздел под названием “Кросс-компиляция”для деталей кросс-компиляции

architecture

Допускаются значения:x86,ia64,спарч,мощность,mips1,mips2,mips3,mips4,mips32,mips32r2,mips64,parisc,рычаг,комбинированный,комбинированный x86-мощность.

Архитектураопределяет общее семейство процессоров для генерации кода.

instruction-set

Разрешенные значения:зависят от используемого набора инструментов.

Набор командопределяет, для какого конкретного набора команд должен быть создан код. Код в целом может не работать на процессорах со старыми/разными наборами команд.

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

address-model

Допустимые значения:32,64.

адресная модельопределяет, должен ли 32-битный или 64-битный код генерироваться компилятором. Работает ли эта функция, зависит от используемого компилятора, его версии, настройки компилятора и значений архитектуры, набора командфункций. См.раздел под названием “C++ Компиляторы”для деталей.

c++-template-depth

Разрешенные значения:Любое положительное целое число.

Эта функция позволяет настроить компилятор 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.

Builtin tools

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

Перед использованием любого инструмента вы должны заявить о своем намерении и, возможно, указать дополнительную информацию о конфигурации инструмента. Это делается путем вызовас помощью правила, обычно в вашемuser-config.jam, например:

using gcc ;

Дополнительные параметры могут передаваться так же, как и для других правил, например:

using gcc : 4.0 : g++-4.0 ;

Варианты, которые могут быть переданы каждому инструменту, задокументированы в последующих разделах.

C++ Compilers

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

GNU C++

Модульgccподдерживает компиляторGNU C++на Linux, ряд Unix-подобных систем, включая SunOS и Windows (либоCygwin, либоMinGW). На Mac OSX рекомендуется использовать систему gcc, см.раздел под названием “Apple Darwin gcc”.

Модуль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-битную компиляцию, вы должны:

  1. Настройте компилятор как обычно. Если вы предоставляете путь к компилятору явно, предоставьте путь к 32-битному компилятору. Если вы попытаетесь указать путь к любому из 64-битных компиляторов, конфигурация не будет работать.

  2. При компиляции используйтеадрес-модель=64для генерации кода AMD64.

  3. Для создания кода 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:

.\b2 toolset=msvc-12.0 windows-api=store architecture=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

Указывает дополнительные параметры командной строки, которые будут переданы линкеру.

Comeau C/C++ Compiler

Модулиcomo-linuxиcomo-winподдерживают. Comeau C/C++ Компиляторна Linux и Windows соответственно.

Модуль инициализируется с использованием следующего синтаксиса:

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.

Digital Mars C/C++ Compiler

Модульdmcподдерживает компиляторDigital Mars C++.

Модуль инициализируется с использованием следующего синтаксиса:

using dmc : [version] : [c++-compile-command] : [compiler options] ;

Это утверждение может повторяться несколько раз, если вы хотите настроить несколько версий компилятора.

Если команда не указана, поднимите. Build будет искать двоичный файл под названиемdmcвPATH.

Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:

cflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.

cxxflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.

compileflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.

linkflags

Указывает дополнительные параметры командной строки, которые будут переданы линкеру.

HP C++ Compiler for Tru64 Unix

Модулиhp_cxxподдерживают. HP C++ Compilerдля Tru64 Unix

Модуль инициализируется с использованием следующего синтаксиса:

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рекомендуется указать следующие параметры:

-library=stlport4 -features=tmplife -features=tmplrefstatic
          

См.Sun C++ Frontend Talesдля подробностей.

Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:

cflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C.

cxxflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C++.

compileflags

Указывает дополнительные флаги компилятора, которые будут использоваться при компиляции источников C и C++.

linkflags

Указывает дополнительные параметры командной строки, которые будут переданы линкеру.

Starting with Sun Studio 12, you can create 64-bit applications by using the address-model=64 property.
IBM Visual Age

МодульvacppподдерживаетIBM Visual AgeC++ Компилятор для операционной системы AIX. Известно, что работают версии 7.1 и 8.0.

Модуль инициализируется с использованием следующего синтаксиса:

using vacpp ;

Модуль не принимает никаких вариантов инициализации. Компилятор должен быть установлен в каталоге/usr/vacpp/bin.

Более поздние версии Visual Возраст называется XL C/C++. Они не были протестированы с модулемvacpp.

Third-party libraries

Повышаю. 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 можно инициализировать с помощью следующего синтаксиса:

using zlib : [version] : [options] : [condition] : [is-default] ;
          

Варианты использования готовой библиотеки:

search

Каталог, содержащий двоичные файлы zlib.

name

Переопределяет имя библиотеки по умолчанию.

include

Каталог, содержащий заголовки 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 ;

Documentation tools

Повышаю. Поддержка создания инструментов документации Boost описана ниже.

xsltproc

Чтобы использовать xsltproc, сначала нужно настроить его с помощью следующего синтаксиса:

using xsltproc : [xsltproc] ;

гдеxsltprocявляется исполняемым файлом xsltproc. Еслиxsltprocне указан, и переменная XSLTPROC установлена, будет использоваться значение XSLTPROC. В противном случае xsltproc будет искаться в PATH.

Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:

xsl:param

Значения должны иметь формуимя=значение

xsl:path

Устанавливает дополнительный путь поиска для xi:include элементов.

catalog

Файл каталога, используемый для переписывания удаленных URL-адресов в локальную копию.

Модуль xsltproc содержит следующие правила. Обратите внимание, что они работают на джем-мишенях и предназначены для использования другим набором инструментов, таким как бустер, а не непосредственно пользователями.

xslt
rule xslt ( target : source stylesheet : properties * )

Запускает xsltproc для создания одного выходного файла.

xslt-dir
rule xslt-dir ( target : source stylesheet : properties * : dirname )

Запускает 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.

Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:

format

Допускаются значения:html,xhtml,htmlhelp,onehtml,man,pdf,ps,docbook,fo,тесты.

Функцияформатаопределяет тип вывода, производимого правилом бустерной книги.

Модуль бустербука определяет правило создания цели, следуя общему синтаксису.

boostbook
rule boostbook ( target-name : sources * : requirements * : default-build * )

Создает цель бустера.

doxygen

Для использования доксигена сначала нужно настроить его с помощью следующего синтаксиса:

using doxygen : [name] ;

Имяявляется командой доксигена. Если он не указан, он будет найден в PATH.

Модуль доксигена зависит от модуля бусбука при генерации BoostBook XML.

Можно предоставить следующие варианты, используя<имя опции>значение опциисинтаксис:

doxygen:param

Все значениядоксигена:парамдобавляются к доксифилу.

prefix

Указывает общий префикс всех заголовков при создании BoostBook XML. Все до этого будет убрано.

reftitle

Указывает заголовок библиотечно-справочного раздела при генерации BoostBook XML.

doxygen:xml-imagedir

При генерации BoostBook XML указывается каталог, в котором размещать изображения, генерируемые из формул LaTex.

[Warning] Warning

Путь интерпретируется относительно текущего рабочего каталога, а не относительно Jamfile. Это необходимо, чтобы соответствовать поведению BoostBook.

Модуль доксигена определяет правило создания цели, следуя общему синтаксису.

doxygen
rule doxygen ( target : sources * : requirements * : default-build * : usage-requirements * )

Создание доксигенной мишени. Если целевое имя заканчивается на .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.

Builtin modules

В этом разделе описаны модули, предоставляемые Boost. Построй. Правило импорта позволяет использовать правила из одного модуля в другом модуле.

modules

Модульопределяет базовую функциональность для модулей обработки.

Модуль определяет ряд правил, которые могут быть использованы в других модулях. Модули могут содержать код на верхнем уровне для инициализации модуля. Этот код выполняется при первой загрузке модуля.

[Note] Note

Jamfile - это специальный модуль, который управляется системой сборки. Хотя они не могут быть загружены непосредственно пользователями, другие функции модулей по-прежнему полезны для Jamfiles.

Каждый модуль имеет свои собственные пространства имен для переменных и правил. Если два модуля A и B используют переменную под названием X, каждый из них получает свою собственную копию X. Они никак не будут мешать друг другу. Аналогичным образом, импорт правил в один модуль не влияет на любой другой модуль.

Каждый модуль имеет две специальные переменные.$(__file__)содержит имя файла, из которого был загружен модуль, и$(__name__)содержит имя модуля.

[Note] Note

$(__file__)не содержит полного пути к файлу. Если вам это нужно, используйтемодули.binding.

  1. правилосвязываниеназвание модуля

    Возвращает связывание файловой системы данного модуля.

    Например, модуль может получить свое собственное местоположение:

    я=

  2. правилоpoke[название модуля ?:переменные +:значение *]

    Устанавливает модульное локальное значение переменной.

    Например, установить переменную в глобальном модуле:

    модули.poke:ZLIB_INCLUDE:/usr/local/include;

  3. правилозаглядыватьмодуль-имя ?:переменные +]

    Возвращает модульное локальное значение переменной.

    Например, читать переменную из глобального модуля:

    локальныйZLIB_INCLUDE=:ZLIB_INCLUDE;

  4. правилоcall-inмодуль-имя ?:имя-правило args *:*

    Вызовите данное правило локально в данном модуле. Используйте это для правил, принимающих имена правил в качестве аргументов, чтобы принятое правило могло быть использовано в контексте абонента правила (например, если правило обращается к модулю globals или является локальным правилом).

    [Note]Примечание

    Правила, называемые таким образом, могут принимать не более 8 параметров.

    Пример:

    [94
  5. правилонагрузкиназвание модуля:имя файла?:поиск *]

    Загрузите указанный модуль, если он еще не загружен.

    модульное имя

    Название модуля для загрузки.

    имя файла

    (частичный) путь к файлу; по умолчанию$ [модуль-имя].jam

    поиск

    Каталоги для поиска имени файла. Дефолты до$(BOOST_BUILD_PATH)

  6. правилоимпортмодульные имена +:правила-опт *:переименование-опт *]

    Загрузите указанный модуль и имена правил импорта в текущий модуль. Любые членыправил-оптовбудут доступны без квалификации в модуле абонента. Любые членыrename-optбудут приниматься в качестве имен правил в модуле абонента вместо имен, которые они имеют в импортируемом модуле. Еслиправила-opt = '*', все правила из указанного модуля импортируются в модуль вызывающего абонента. Еслипереименовать в, он должен иметь такое же количество элементов, какправила-опта.

    Примеры:

    путь импорта;путь импорта;путь импорта:путь импорта:путь импорта;путь импорта;путь импорта:нативный путь:путь нативного пути;путь нативного пути;

  7. правилоклон-правилаисточник-модуль-мишень-модуль]

    Определить вывезенные копии в$(целевой модуль)всех правил, вывезенных из$(исходный модуль). Также сделайте их доступными в глобальном модуле с квалификацией, так что это так же, как если бы правила были определены первоначально в$

    .
  8. path

    Выполняет различные дорожные манипуляции. Пути всегда находятся в «нормализованном» представлении. В ней путь может быть либо:

    • , или

    • ['/'] [ ( '..' '/' )* (token '/')* token ]

    На простом английском языке путь может быть укоренен,'..'элементы допускаются только в начале, и он никогда не заканчивается в слэше, кроме пути, состоящего только из слэша.

    1. правилосделатьродным

      Преобразует родной путь в нормализованную форму.

    2. правилородноепуть

      Создает родное представление о пути.

    3. правилоуходит корнямипуть

      Тесты, если путь укоренен.

    4. правилоимеет родителяпуть

      Тесты, если путь имеет родителя.

    5. правилоимя основанияпуть

      Возвращает путь без каких-либо компонентов каталога.

    6. правилородитель[путь]

      Возвращает родительский каталог пути. Если родителя нет, выдается ошибка.

    7. правилообратно

      Возвращаетпуть2так, чтоприсоединяются к пути2=".. Путь может не содержать«..»элемента или быть укорененным.

    8. правилоприсоединитьэлементы +

      Конкатенирует элементы пройденного пути. Создает ошибку, если коренится какой-либо элемент, отличный от первого. Пропускает любые пустые или неопределенные элементы пути.

    9. правилокоренькорень пути]

      Еслипутьотносительный, он коренится вкорень. В противном случае она неизменна.

    10. правилоpwd

      Возвращает текущий рабочий каталог.

    11. правилошарdirs *:шаблоны +:исключают-паттерны *]

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

      • '?' соответствует любому символу

      • '*' соответствует произвольному числу символов

      Файл $(d)/e1/e2/e3 (где 'd' находится в $(dirs)) соответствует шаблону p1/p2/p3, если и только если e1 соответствует p1, e2 соответствует p2 и так далее. Например:

      [ glob . : *.cpp ]
      [ glob . : */build/Jamfile ]
      

    12. правилошаровое деревокорни *:узоры +:исключают-паттерны *]

      Рекурсивная версияшара. Создает шар файлов, а также ищет в подкаталогах данных корней. Факультативный набор шаблонов исключения будет отфильтровывать соответствующие записи из результата. Исключения также применяются к сканированию подкаталогов, так что каталоги, которые соответствуют шаблонам исключения, не будут искаться.

    13. правилосуществует

      Возвращается, если указанный файл существует.

    14. правиловсе-родителипуть:верхний_лимит ?:cwd ?]

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

    15. правилоglob-in-parentsdir:шаблоны +:верхний предел ?

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

    16. правилоотносительноеродитель-ребенок:нет ошибки ?

      Предполагая, чторебенокявляется подкаталогомродитель, возвращайте относительный путь отродителькребенок.

    17. правилоотносительнопути1 пути2

      Возвращает минимальный путь к пути 2, который является относительным путем 1.

    18. правилопрограммный путь

      Возвращает список путей, которые используются операционной системой для поиска программ.

    19. правило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»и захватывает его.

    • "^"соответствует началу струны.

    • «$»соответствует концу струны.

    • «<» соответствует началу слова.

    • «\>» соответствует концу слова.

    1. правилоразделениесепаратор струн

      Возвращает список следующих подстрок:

      1. от начала до первого появлениясепаратораили до конца

      2. между каждым появлениемсепаратораи следующим событием

      3. от последнего появлениясепараторадо конца.

      Если сепаратор отсутствует, результат будет содержать только один элемент.

    2. правилосплит-листсписок *:сепаратор]

      Возвращает сцепленные результаты примененияregex.splitк каждому элементу списка с использованием шаблона разделителя.

    3. правилосоответствиерисунок:строка:индексы *]

      Матчстрокапротиврисунок, и вернуть элементы, указанныеиндексы.

    4. правилопреобразуетсписок *:шаблон:индексы *]

      Матчи всех элементовсписокпротившаблони возвращает список элементов, указанныхиндексывсех успешных матчей. Если индексыопущены, возвращается список первых скобчатых групп всех успешных матчей.

    5. правилопобегстрока:символы:побег-символ]

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

    6. правилозаменитьзамену струнного матча]

      Заменяет совпадение строки в данной строке и возвращает новую строку. Спичечная строка может быть выражением регекса.

    7. правилосменный списоксписок *:матч:замена

      Заменяет совпадение строк в заданном списке строк и возвращает список новых строк. Спичечная строка может быть выражением регекса.

    См. также:Матч

    sequence

    Различные полезные функции списка. Обратите внимание, что алгоритмы в этом модуле выполняются в основном в пространстве имен вызывающего абонента, так что локальные правила могут использоваться в качестве функциональных объектов. Также обратите внимание, что большинство предикатов могут быть многоэлементными списками. В этом случае все, кроме первого элемента, предрасположены к первому аргументу, который передается правилу, названному первым элементом.

    1. правилофильтрпредикат +:последовательность *]

      Возврат элементовe$(последовательность), для которых$(предикат) eимеет ненулевое значение.

    2. правилотрансформирует[функция +:последовательность *]

      Возвратить новую последовательность, состоящую из[$(функция) [e]]для каждого элементаe[последовательность]

      .
    3. правилообратное

      Возвращает элементыsв обратном порядке.

    4. правиловставка-сортировкаs *:заказала *]

      Вставка-сортsс использованием Бинарного Предсказаниязаказала.

    5. правилосливаетсяs1 *:s2 *:заказали *

      Объедините две упорядоченные последовательности с помощью Бинарного Предсказания, упорядоченного

      .
    6. правилоприсоединениеs *:совместное ?]

      Соедините элементысв одну длинную строку. Еслисоединениеподается, оно используется в качестве разделителя.

    7. правилодлина

      Найдите длину любой последовательности.

    8. правилоуникальноесписок:стабильное ?]

      Удалите дубликаты из списка. Еслистабильныйпройден, то порядок элементов будет неизменным.

    9. правилоМакс-элементэлементы +:заказали ?

      Возвращает максимальное число вэлементах. Используетупорядоченныедля сравнений иличисла. 1851 г., если ни один из них не

    10. правиловыборка самого высокого рангаэлементы *:разряды *

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

    type

    Занимается декларацией типа цели и определяет класс цели, который поддерживает типизированные цели.

    1. правилорегистртип:суффиксы *:базового типа ?]

      Регистрирует целевой тип, возможно полученный избазового типа. Предоставляя список суффиксов здесь, ярлык для отдельного вызова правила регистр-суффиксовс заданными суффиксами и правилас заданным целевым суффиксомс первым заданным суффиксом.

    2. правилорегистровые суффиксысуффиксы +:тип]

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

    3. правилозарегистрированотип

      Зарегистрированы возвраты истинного типа iff.

    4. правилоподтверждаеттип

      Выдает ошибку, если типнеизвестен.

    5. правилоset-scannerтип:сканер

      Установите класс сканера, который будет использоваться для этого типа.

    6. правилоget-scannerтип:имущество

      Возвращает экземпляр сканера, соответствующийтипуинабору свойств.

    7. правилобазатип

      Возвращает базовый тип для данного типа или ничего в случае, если данный тип не получен.

    8. правиловсе базытип

      Возвращает данный тип и все его базовые типы в порядке их расстояния от типа.

    9. правиловсепроизводноетип

      Возвращает данный тип и все его производные типы в порядке их расстояния от типа.

    10. правилополучено

      Верно, еслитиправенбазеили имеетбазев качестве прямой или косвенной базы.

    11. правилосгенерированный набором целевой суффикс:свойства *:суффикс]

      Устанавливает суффикс файла, который будет использоваться при генерации цели типас заданными свойствами. Можно называть без свойств, если для типауже не указан суффикс. Параметрсуффиксаможет быть пустой строкой"", чтобы указать, что суффикс не должен использоваться.

      Обратите внимание, что это не приводит к тому, что файлы с суффиксомавтоматически распознаются как файлы типа. Два разных типа могут использовать один и тот же суффикс для своих сгенерированных файлов, но только один тип может быть автоматически обнаружен для файла с этим суффиксом. Пользователь должен четко указать, какой из них использует правило регистровых суффиксов.

    12. правилосгенерированный изменением целевой суффикс:свойства *:суффикс]

      Измените суффикс, ранее зарегистрированный для этого типа/комбинации свойств. Если суффикс еще не определен, установите его.

    13. правилосгенерированный целевой суффикс[тип:набор свойств]

      Возвращает суффикс, используемый при генерации файла типас заданными свойствами.

    14. правилозаданно-генерируемый-целевой-префикстип:свойства *:префикс]

      Устанавливает префикс цели, который должен использоваться при генерации целей типас заданными свойствами. Можно вызвать с пустыми свойствами, если еще не указан префикс длятипа.

      Параметрпрефиксаможет быть пустой строкой"", чтобы указать, что префикс не должен использоваться.

      Пример использования: названия библиотек используют префикс«lib»на unix.

    15. правилоизменение-генерируемый-мишень-префикстип:свойства *:префикс]

      Измените приставку, ранее зарегистрированную для этого типа/комбинации свойств. Если префикс еще не определен, установите его.

    16. правилосгенерированный целевой префикс[тип:набор свойств]

      Возвращает префикс, используемый при генерации файла типас заданными свойствами.

    17. правилотипимя файла

      Возвращает тип файла с указанием его имени. Если в имени файла несколько точек, попробуйте каждый суффикс. Например, для названия "file.so.1.2" будут использоваться суффиксы "2", "1" и "so".

    Builtin classes

    Class abstract-target

    Базовый класс для всех абстрактных целей.

    class abstract-target {
        rule __init__ ( name : project )
        rule name ( )
        rule project ( )
        rule location ( )
        rule full-name ( )
        rule generate ( property-set )
    }
    

    Классы, полученные изабстрактной цели:

    1. rule__init__(name:project)

      name

      Имя цели в Джамфиле.

      project

      Проект, к которому относится эта цель.

    2. правилоназвание

      Возвращает название этой цели.

    3. правилопроект

      Вернетпроектдля этой цели.

    4. правилорасположение

      Возвращает место, где была объявлена цель.

    5. правилополное имя

      Возвращает считываемое пользователем имя для этой цели.

    6. правилопорождаютнабор свойств

      Генерирует виртуальные мишени для этой абстрактной мишени с использованием заданных свойств, если только цель не требует другого значения некоторой функции. Это абстрактный метод, который должен быть перегружен производными классами.

      При успехе возвращается:

      • свойство, установленное с требованиями использования, которые должны применяться к иждивенцам
      • Список созданных виртуальных целей, которые могут быть пустыми.

      Еслинабор свойствпуст, выполняет сборку по умолчанию этой цели способом, специфичным для производного класса.

    Class project-target

    class project-target : abstract-target {
        rule generate ( property-set )
        rule build-dir ( )
        rule main-target ( name )
        rule has-main-target ( name )
        rule find ( id : no-error ? )
        # Methods inherited from abstract-target
        rule name ( )
        rule project ( )
        rule location ( )
        rule full-name ( )
    }
    

    Этот класс имеет следующие обязанности:

    • Сохранение перечня основных целей этого проекта и их построение.

    1. порождают

      Переопределенияabstract-target.generate. Создание виртуальных целей для всех целей, содержащихся в этом проекте.

      При успехе возвращается:

      • свойство, установленное с требованиями использования, которые должны применяться к иждивенцам
      • Список созданных виртуальных целей, которые могут быть пустыми.

    2. правилобилд-дир

      Возвращает корневой каталог сборки проекта.

    3. правилоосновной цели[название]

      Возвращаетосновной целиклассовый экземпляр, соответствующийимени. Позвонить можно только после полной загрузки проекта.

    4. правилоимеет основную цель

      Возвращает, существует лиосновная цельс указанным именем. Позвонить можно только после полной загрузки проекта.

    5. правилонайтиid:неошибка?]

      Найти и вернуть цель с указанным идентификатором, обработанным относительно себя. Id может указывать либо цель, либо имя файла с приоритетом цели. Может сообщать об ошибке или ничего не возвращать, если цель не найдена в зависимости от параметрабез ошибок.

    Class main-target

    class main-target : abstract-target {
        rule generate ( property-set )
        # Methods inherited from abstract-target
        rule name ( )
        rule project ( )
        rule location ( )
        rule full-name ( )
    }
    

    Основная цельпредставляет собой названную цель верхнего уровня в Jamfile.

    1. правилогенерируетнабор свойств

      Overridesabstract-target.generate. Выберите альтернативу для этой основной цели, найдя все альтернативы, требования которых удовлетворяютсянабором свойстви выбрав тот, который имеет самый длинный набор требований. Возвращает результат вызовагенерироватьна эту альтернативу.

      При успехе возвращается:

      • свойство, установленное с требованиями использования, которые должны применяться к иждивенцам.
      • Список созданных виртуальных целей, которые могут быть пустыми.

    Class basic-target

    class basic-target : abstract-target {
        rule __init__ ( name : project : sources * : requirements * : default-build * : usage-requirements * )  
        rule generate ( property-set )
        rule construct ( name : source-targets * : property-set )
        # Methods inherited from abstract-target
        rule name ( )
        rule project ( )
        rule location ( )
        rule full-name ( )
    }
    

    Реализует наиболее стандартный способ построения основной целевой альтернативы из источников. Позволяет источникам быть файлами или другими основными целями и обрабатывает генерацию этих целей зависимости.

    1. правило__init__:название:источники:требования *:требования по умолчанию *:требования к использованию

      Название цели

      проект

      Проект, в котором заявлена цель.

  9. правилогенерируетнабор свойств

    Overridesabstract-target.generate. Определяет свойства конечной сборки, генерирует источники и вызывает конструкцию. Этот метод не следует переоценивать.

    При успехе возвращается:

    • свойство с требованиями использования, которые должны применяться к иждивенцам.
    • Список созданных виртуальных целей, которые могут быть пустыми.

  10. правилоконструкциюназвание:исходные цели *:набор свойств

    Конструирует виртуальные цели для этой абстрактной цели. Возвращает набор свойств и список виртуальных целей. Они должны быть перегружены производными классами.

  11. Class typed-target

    class typed-target : basic-target {
        rule __init__ ( name : project : type : sources * : requirements * : default-build * : usage-requirements * ) 
        rule type ( )
        rule construct ( name : source-targets * : property-set )
        # Methods inherited from abstract-target
        rule name ( )
        rule project ( )
        rule location ( )
        rule full-name ( )
        
        # Methods inherited from basic-target
        rule generate ( property-set )
      }
    

    typed-target is the most common kind of target alternative. Rules for creating typed targets are defined automatically for each type.

    1. rule__init__(name:project:type:sources *:requirements *:default-build *:usage-requirements *)

      name

      Название цели

      project

      Проект, в котором заявлена цель.

      type

      Типцели.

    2. правилотип

      Возвращаеттипцели.

    3. правилоконструкциюназвание:цели источника *:набор свойств

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

    [Note]Примечание

    Правило импортадоступно без квалификации во всех модулях.

    [Note]Примечание

    Эта функция вызывается автоматическиbasic-target.generateи не должна вызываться непосредственно пользователями.

Class property-set

Класс для хранения набора свойств.

class property-set {
    rule raw ( )
    rule str ( )
    rule propagated ( )
    rule add ( ps )
    rule add-raw ( properties * )
    rule refine ( ps )
    rule get ( feature )
}

Существует 1<->1 соответствие между идентичностью и ценностью. Нет двух одинаковых классов. Чтобы сохранить это свойство, правило «property-set.create» должно использоваться для создания новых экземпляров. Случаи неизменны.

  1. правилосырое

    Возвращает список хранимых свойств.

  2. правилост

    Возвращает струнное покаяние сохраненных свойств.

  3. правило, распространяемое

    возвращаетнабор свойств, содержащий всераспространяемыесвойства в этомнабор свойств.

  4. ruleadd(ps)

    Возвращает новыйнабор свойств, содержащий объединение свойств в этомнабор свойстви вps.

    [Note]Примечание

    Еслиpsсодержит несвободные свойства, которые должны переопределять значения в этом объекте, используйтедля уточнения.

  5. правилоadd-rawсвойства

    Ссылкадобавить, за исключением того, что она берет список свойств вместонабор свойств.

  6. правилоуточнитьps

    Уточняет свойства, переопределяя любые несвободные и неусловные свойства, для которых вpsуказано другое значение. Возвращает полученноеимущество

    .
  7. правилополучитьпризнак

    Возвращает все значенияпризнака

    .

Build process

Общий обзор процесса сборки был дан в пользовательской документации. В этом разделе приведены дополнительные детали и некоторые конкретные правила.

Чтобы подытожить, построение цели с конкретными свойствами включает в себя следующие шаги:

  1. применение сборки по умолчанию,

  2. Выбор основной целевой альтернативы

  3. определение «общих» свойств

  4. цели строительства, указанные в списке источников и свойствах зависимости,

  5. Добавление требований к использованию при построении зависимостей к «общим» свойствам

  6. построение цели с использованием генераторов,

  7. вычисление требований к использованию, подлежащих возврату.

Alternative selection

При наличии нескольких альтернатив необходимо выбрать одну из них. Процесс заключается в следующем:

  1. Для каждой альтернативыусловиеопределяется как набор базовых свойств в требованиях. [Примечание: возможно, было бы лучше четко указать условие, как и в условных требованиях].
  2. Альтернатива жизнеспособна только в том случае, если все свойства в состоянии присутствуют в запросе на строительство.
  3. Если есть жизнеспособная альтернатива, то она выбрана. В противном случае делается попытка найти одну из лучших альтернатив. Альтернатива a лучше, чем другая альтернатива b, если набор свойств в состоянии b является строгим подмножеством набора свойств состояния a. Если есть одна жизнеспособная альтернатива, которая лучше всех остальных, она выбрана. В противном случае сообщается об ошибке.

Determining common properties

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

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

  1. Несвободная функция может иметь только одно значение

  2. Неусловное свойство в требовании всегда присутствует в общих свойствах.

  3. Имущество в запросе на строительство присутствует в общих свойствах, если (2) не указано иное.

  4. Если запрос на строительство или требования (безусловные или условные) включают расширяемое свойство (композитное или свойство с заданной субфункцией), поведение эквивалентно явному добавлению всех расширенных свойств для запроса на строительство или требований.

  5. Если требования включают условное свойство, и условие этого свойства истинно в контексте общих свойств, то условное свойство должно быть и в общих свойствах.

  6. Если другие правила не дают значения для признака, он имеет значение по умолчанию в общих свойствах.

Эти правила являются декларативными, они не определяют, как вычислить общие свойства. Тем не менее, они предоставляют достаточно информации для пользователя. Важным моментом является обработка условных требований. Условие может быть удовлетворено либо собственностью в запросе на строительство, либо неусловными требованиями, либо даже другим условным имуществом. Например, следующий пример работает так, как ожидалось:

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

Definitions

Features and properties

Функцияявляется нормализованным (независимым от набора инструментов) аспектом конфигурации сборки, например, включена ли накладка. Имена признаков не могут содержать символ>.

Каждый признак в конфигурации сборки имеет одно или более связанныхзначение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

Интерфейс деклараций функций низкого уровня - это правилофункциииз модуляфункции:

rule feature ( name : allowed-values * : attributes * )

Допустимые значения функции могут быть расширены с помощью правилаfeature.extend.

Property refinement

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

  1. Каждое свойство в требуемом наборе добавляется к исходному набору свойств.
  2. Если исходный набор свойств включает в себя свойство с другим значением несвободного признака, это свойство удаляется.

Conditional properties

Иногда желательно применять определенные требования только для конкретной комбинации других свойств. Например, один из компиляторов, который вы используете, выдает бессмысленное предупреждение, которое вы хотите подавить, передав ему опцию командной строки. Вы не хотите передавать эту опцию другим компиляторам. Условные свойства позволяют сделать именно это. Их синтаксис:

        property ( "," property ) * ":" property
      

Например, вышеуказанная проблема будет решена путем:

exe hello : hello.cpp : <toolset>yfc:<cxxflags>-disable-pointless-warning ;

Синтаксис также допускает несколько свойств в состоянии, например:

exe hello : hello.cpp : <os>NT,<toolset>gcc:<link>static ;

Target identifiers and references

Идентификатор целииспользуется для обозначения цели. Синтаксис это:

target-id -> (project-id | target-name | file-name )
              | (project-id | directory-name) "//" target-name
project-id -> path
target-name -> path
file-name -> path
directory-name -> path

Эта грамматика позволяет распознавать некоторые элементы как

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

target-reference -> target-id [ "/" requested-properties ]
requested-properties -> property-path

Например,

          exe compiler : compiler.cpp libs/cmdline/<optimization>space ;
        

Это может привести к тому, что библиотекаcmdline, оптимизированная для пространства, будет связана, даже если исполняемый компиляторпостроен с оптимизацией скорости.


PrevUpHomeNext

Статья Reference раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 45. Boost.Build User Manual может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 45. Boost.Build User Manual ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 00:51:21/0.040615081787109/1