![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Boost.ConfigBoost , Boost.Config ,
|
![]() |
Important |
---|---|
Этот сценарий настройки только устанавливает заголовки Boost для использования с конкретным компилятором. Это не влияет на бусть. Строить или как строятся библиотеки. |
Если вы знаете, что повышение неверно настроено для вашей конкретной настройки, и вы находитесь на UNIX, как платформа, то вы можете попробовать улучшить ситуацию, запустив сценарий настройки импульса. Из командной строки вы должны будете втиснуть в /libs/конфигурация/
и тип:
sh ./настроить
вы увидите список предметов, которые проверяются, поскольку сценарий работает через тесты регрессии. Обратите внимание, что сценарий настройки только автоматически обнаруживает ваш компилятор, если он называется g++, c++ или CC. Если вы используете какой-то другой компилятор, вам нужно будет установить одну или несколько из следующих переменных среды:
Переменная |
Описание |
---|---|
CXX |
Название компилятора, например |
CXXFLAGS |
Флаги компилятора для использования, например, |
LDFLAGS |
Флаги для использования, например, |
LIBS |
Любые библиотеки для подключения, например, |
Например, для запуска сценария настройки с HP aCC вы можете использовать что-то вроде:
export CXX="aCC" export CXXFLAGS="-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \ -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE" export LDFLAGS="-DAportable" export LIBS="-lpthread" sh ./configure
Однако вы запускаете сценарий настройки, когда он закончит, вы найдете новый заголовок -user.hpp
- расположен в
/boost/конфигурация/
, чтобы заменить пользователь по умолчанию.hpp, предоставляемый импульсом. Эта опция позволяет только одну настраиваемую настройку; разработчики должны избегать этой опции, поскольку она несет опасность случайного совершения настраиваемого модуля BOOST_USER_CONFIG
, чтобы указать на это. Например, создайте новую поддиректорию /boost/config/
user/
, и скопируйте заголовок там; например, мультрид>-gcc-p>. Затем, при компиляции добавить опцию командной строки: -DBOOST_USER_CONFIG="", и усилитель будет использовать новый заголовок конфигурации. Эта опция позволяет генерировать более одного заголовка конфигурации и держать их отдельно от источника импульса - так что обновления источника не мешают вашей конфигурации.
Существуют некоторые настройки, которые представляют собой выбор пользователей, а не дефекты компиляторов или конкретные параметры платформы. Они перечислены в <boost/config/user.hpp>
и в начале настраиваемого user.hpp
заголовок. Вы можете определить их на командной строке или путем редактирования <boost/config/user.hpp>
, они перечислены в следующей таблице:
Macro |
Описание |
---|---|
|
При определении он должен указывать на имя файла конфигурации пользователя, чтобы включить перед любыми файлами конфигурации импульса. При неопределении по умолчанию |
|
При определении он должен указывать на имя файла конфигурации компилятора для использования. Определение этого отрезает логику выбора компилятора и устраняет зависимость от заголовка, содержащего эту логику. Например, если вы используете gcc, то вы можете определить BOOST_COMPILER_CONFIG на |
|
При определении он должен указывать на имя стандартного файла конфигурации библиотеки для использования. Определение этого вычеркивает стандартную логику выбора библиотеки и устраняет зависимость от заголовка, содержащего эту логику. Например, если вы используете STLport, то вы можете определить |
|
При определении он должен указывать на имя файла конфигурации платформы для использования. Определение этого отрезает логику выбора платформы и устраняет зависимость от заголовка, содержащего эту логику. Например, если вы компилируете на linux, то вы можете определить |
|
При определении ни один файл конфигурации компилятора не выбирается или не включается, определяет, когда компилятор полностью соответствует стандарту, или где заголовок пользователя (см. |
|
В случае определения стандартный файл конфигурации библиотеки не выбирается или не включается, определяет, когда стандартная библиотека полностью соответствует стандарту, или где заголовок пользователя (см. |
|
При определении ни один файл конфигурации платформы не выбирается или не включается, определяет, когда платформа полностью соответствует стандарту (и не имеет полезных дополнительных функций), или где заголовок пользователя (см. |
|
Эквивалентно к определению всех |
|
Нормальное поведение компиляторных версий, которые являются более новыми, чем последняя известная версия, заключается в том, что они имеют все те же дефекты, что и последняя известная версия. Настраивая это определение, то компиляторные версии, которые являются более новыми, чем последняя известная версия, предполагается полностью соответствовать стандарту. Это, вероятно, наиболее полезно для разработчиков или тестеров, а также для тех, кто хочет использовать импульс для тестирования бета-компиляторных версий. |
|
Когда этот флаг установлен, если настройка найдет что-то неизвестное, то он остановится с #error, а не продолжится. Проверители ускорения регрессии должны установить это определение, как и любой, кто хочет быстро проверить, поддерживается ли повышение на своей платформе. |
|
При определении отключает поддержку потоков, даже если компилятор в текущем режиме перевода поддерживает несколько потоков. |
|
При определении отключить использование Win32 конкретного API, даже если они доступны. Также имеет эффект установки |
|
Запрещает заголовки с включением любых заголовков префикса/суффикса, которые обычно контролируют такие вещи, как упаковка и выравнивание структуры. |
|
Заголовок префикса должен включать в себя любое повышение. Конфигурация обычно выбирается, любая замена должна настроить параметры упаковки и выравнивания по мере необходимости. |
|
Заголовок суффикса, чтобы включить вместо любого повышения. Конфигурация обычно выбирается, любая замена должна отменить действие заголовка префикса. |
|
Заставить все библиотеки, имеющие отдельный источник, быть связанными как библиотеки dll, а не статические библиотеки на Microsoft Windows (это макро используется для включения |
|
Библиотека Сил "что бы" не было связано как dll, а не статическая библиотека на Microsoft Windows: заменить WHATEVER часть макро-имя на имя библиотеки, на которую вы хотите динамически ссылаться, например, использовать |
|
говорит системе настройки не автоматически выбирать, на какие библиотеки ссылаться. Обычно, если компилятор поддерживает #pragma lib, то правильный вариант построения библиотеки будет автоматически выбран и связан с, просто путем включения одного из заголовков библиотеки. Этот макрос выключает эту функцию. |
|
говорит системе настройки не автоматически выбирать, какая библиотека будет ссылаться на библиотеку "в зависимости от того", заменить WHATEVER в макроимени именем библиотеки; например |
|
вызывает код автосвязи с выводными диагностическими сообщениями, указывающими имя библиотеки, которая выбрана для подключения. |
|
Если вы построили Boost, используя опцию |
|
Перекрывает имя инструментария части названия библиотеки, с которой связана; обратите внимание, если это определено, это должно быть определено к цитируемой строковой буквальной строке, например, "abc". |
Настраивая различные макросы на командную строку компилятора или редактируя
Конфигурация Boost структурирована таким образом, что настройка пользователя включена в первую очередь (по умолчанию BOOST_USER_CONFIG
не определено). Это создает любую политику, определенную пользователем, и дает пользователю возможность влиять на то, что происходит дальше.
Затем включены компилятор, стандартная библиотека и конфигурационные файлы платформы. Они включены через макросы (BOOST_COMPILER_CONFIG
и т.д., см. пользовательские настраиваемые макросы), и если соответствующий макрос неопределен, то для их установки включен отдельный заголовок, который определяет, какой компилятор/стандартная библиотека/платформа используется. Конфигурация может быть полностью проигнорирована, если установлен соответствующий BOOST_NO_XXX
макрос (например, BOOST_NO_COMPILER_CONFIG
для отключения, включая любой файл конфигурации компилятора - см. пользовательские настраиваемые макросы.
Наконец заголовок конфигурации, включает в себя
Следующие примеры использования представляют лишь несколько возможностей:
Давайте предположим, что мы создаем импульс с Visual C++ 6 и STLport 4.0. Предположим также, что мы не намерены обновлять наш компилятор или стандартную библиотеку в ближайшее время. Чтобы избежать нарушения зависимостей при обновлении, мы, возможно, хотим «заморозить» наши заголовки конфигурации, так что мы должны восстановить наш проект только в том случае, если сам код импульса изменился, а не потому, что настройка импульса была обновлена для более поздних версий Visual C++ или STLport. >>>>>>>>>>>2>>>>>3>>>>>3>>>>>>>>>3>>>>3>>>>>3>>>>>3>>>>>3>>>>>>>>>>>>>>>>>>>>>> Затем мы создадим собственный каталог конфигурации: boost/config/mysetup/
, и скопируем файлы конфигурации там. Наконец, откройте
#define BOOST_COMPILER_CONFIG "boost/config/mysetup/visualc.hpp" #define BOOST_STDLIB_CONFIG "boost/config/mysetup/stlport.hpp" #define BOOST_USER_CONFIG "boost/config/mysetup/win32.hpp"
Теперь, когда вы используете импульс, его заголовок конфигурации будет идти прямо к нашим «замороженным» версиям и игнорировать версии по умолчанию, вы теперь будете изолированы от любых изменений конфигурации при обновлении импульса. Этот метод также полезен, если вы хотите изменить некоторые файлы конфигурации импульса; например, если вы работаете с выпуском бета-компилятора, еще не поддерживаемым увеличением.
Предположим, что вы используете бустер с компилятором, который полностью соответствует стандарту; вы не заинтересованы в том, что у старых версий вашего компилятора могут быть ошибки, потому что вы знаете, что ваша текущая версия не нуждается в каких-либо настройках конфигурации макросов. В таком случае вы можете определить BOOST_NO_COMPILER_CONFIG
либо на командной строке, либо в
Если вы работаете на неix-подобной платформе, то вы можете использовать сценарий настройки для создания «замороженной» конфигурации на основе текущей настройки компилятора - , используя сценарий настройки для более подробной информации.
Библиотека конфигурации импульса предоставляет полный набор программ регрессии тестовых программ в рамках /boost/config/
test/
Файл |
Описание |
---|---|
|
Печатает подробное описание вашего компилятора/стандартной настройки библиотеки/платформы, а также текущую конфигурацию увеличения. Информация, предоставляемая этой программой, полезна для создания файлов конфигурации импульса. Если вы сообщаете, что повышение неправильно настроено для вашего компилятора/библиотеки/платформы, то, пожалуйста, включите выход из этой программы при представлении информации о требуемых изменениях. |
|
монолитная программа тестирования, которая включает в себя большинство отдельных тестовых случаев. Это обеспечивает быструю проверку, чтобы увидеть, правильно ли настроен импульс для вашего компилятора/библиотеки/платформы. |
|
Испытания вашей стандартной библиотеки |
|
Отдельные файлы тестовых дефектов компилятора. Каждый из них должен компилироваться, если нет, то должны быть определены соответствующие макросы |
|
Отдельные файлы тестовых дефектов компилятора. Каждый из них не должен компилироваться, если он делает то соответствующий |
|
Индивидуальные тестовые файлы. Если один из них не компилируется, то соответствующий макрос |
|
Индивидуальные тестовые файлы. Если один из них компилируется, то соответствующие макросы |
Хотя вы можете запустить тесты регрессии конфигурации в качестве отдельных тестовых файлов, их довольно много, поэтому есть несколько коротких путей, которые помогут вам:
Если вы создали драйвер boost regression , то вы можете использовать это для создания приятного html отформатированного отчета о результатах с использованием поставляемого тестового файла.
В качестве альтернативы вы можете запустить такой сценарий настройки:
./конфигурация --доступна-тест
в этом случае сценарий будет тестировать текущую конфигурацию, а не создавать новую с нуля.
Если вы сообщаете результаты этих тестов для новой платформы/библиотеки/компилятора, то, пожалуйста, включите журнал полного вывода компилятора, выход из config_info.cpp
, а также результаты тестирования спереди/выхода.
Последний пересмотр: 21 сентября 2016 года в 14:37:53 GMT |
Статья Boost.Config раздела Boost.Config может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |